GPS、谷歌地图等,可以搜星,但无法定位的解决方法
本人的是Moto的DEFY/ME525国行,后自行刷机为DEFY+/ME525+。
***的是谷歌地图,曾经一直比较好用,定位准确,还有导航等功能。用的时间长了,
比较顺手。
上周发现谷歌地图的定位功能突然不能用了,每次点击定位,反应半天之后,显示“暂时无法定位”。如下图所示。
一开始还以为是谷歌地图这个app坏掉了,后来,重新***了一下,还是同样的问题,看来不是app问题了。
谷歌地图app地址:
===========================================================================
后来,本机上还***了GPS
Test软件,发现能够搜星,但是经纬度、本地时间等无法计算出来。
看来是手机软件的问题了,硬件肯定还是满足GPS条件的。
(上图是从别的地方搬移过来的,左边三幅是GPS
test正确工作的测试图。左一显示的是搜星情况,左二显示的计算后的速度、手机朝向、海拔,左三显示的是GPS计算出的本地时间以及格林威治时间等等。)
但是,由于本人的GPS目前只能搜星,不能定位,所以,在途中标红框的参数部分都显示为“零”,而且左一图中的搜星情况没有彩色标注,都是灰色的,这说明没有星座在用,即“使用中”的个数为零。
test软件的详细使用和下载地址可以参见这里:
============================================================================
开始搜索网上各种大牛的方法。最终自己是这么解决的。
首先,确保自己的手机已ROOT,并且***了R.E.管理器。
如果没有,请自行对照自己机型进行刷机和***。
然后,检查自己手机是否***了“谷歌的服务框架”和“定位服务”等。
这一步可以参照这个帖子:
如果,如本人的情况一样,之前谷歌地图能用,但是现在莫名其妙不能定位了,而且能够搜到星座,那就继续往下看。
---------------------以下参考forumz的详细教程【】-------------------
GPS不能定位,搜星慢可能是机器内的GPS配置文件location.cfg的一些设置上问题导致的,并不是DEFY的硬件问题,通过改动部分设置会令到这一情况有所改善.
如果你希望通过刷ROM来令DEFY的GPS给力一点,那么在你刷ROM前可以试试以下的方法,无效的话再刷大神们的ROM也不迟.
先说说我的Defy情况,入手一个星期,亚太新加坡水机,自带系统刷的是某个hiapk
2.1的ROM,基本上使用没太大问题,就是GPS不给力,试了很多次长时间不能定位,连星都没搜到几颗,开了网络辅助也一样,最好的一次是搜到3颗星,但很快又消失掉,按照以下方法修改location.cfg文件后搜星定位速度非常快,同一位置10多秒就搜到10颗星(使用网络辅助).
首先先确认一下系统的GPS是否已经启动,如果是因为GPS功能没启动才导致不能定位那就有点冤了,只要定位搜星正常就不用看下面的修改了
系统设置-&位置和安全-&我的位置:
使用无线网络:
启用这个就是使用WLAN或GPRS等网络进行辅助定位,建议开启,有效提高搜星速度,另外开启后在使用GPS时确认机器接入了WLAN或者GPRS接入没有被禁用.
使用GPS卫星:
启用 - 就是打开GPS功能,没打开这个肯定不能定位了.
如果要使用无线网络辅助,即用A-GPS辅助,还要关闭数据保护(这点不太确定,我试过启用数据保护时GPS搜星过程中GPRS数据连接貌似是没有流量的,关闭后就有流量了,所以估计是这里阻止对星历数据的下载):
系统设置-&数据管理-&数据保护:
启用数据保护:
2. ***一个GPS测试软件,用来查看机器的搜星速度等情况,推荐GPS Test Plus, GPS Status 或者 Ulysee
GPS Test Plus v1.1.1 汉化版
GPS测试仪(GPS Test Plus)v1.1.1 汉化版,支持自动探测设备上的GPS。
(GPSTestPlus是一个简单易用的GPS工具,它支持自动探测设备上的GPS,还可以显示多种GPS数据,并支持选择多种不同的GPS坐标格式。
显示当前接收到的GPS卫星数量,信号强度,方位,显示你的GPS坐标,指南针功能,你所在地区是白天还是黑夜,你现的速度,你现在所在时区的时间,以及UTC时间等等。
修改location.cfg文件,如果觉得看不明白如何修改的可以下载后面提供的偶改好自用的location.cfg文件,后面会有下载.
这个修改的方法不是我原创,是根据&itfunz上&newblue&的个帖子:&&下面的修改说明都是来源于这个帖子.
修改需要用到RE文件管理器(Root Explorer),不会RE文件管理器操作的自行搜索帖子学习
RE文件管理器下载:&&&(208.05
Defy Root 教程:&
需要修改的location.cfg文件在两个位置:&/data/location/location.cfg&和&/system/etc/location.cfg
修改前先使用RE文件管理器将此两个文件复制到
/sdcard 上备份.
以上两个个位置的location.cfg文件都是进行同样的修改,修改前建议先关闭GPS功能.
修改方法: 1. 可以直接使用RE文件管理器打开修改,这样不需要修改文件的权限.
&& & 2. 将文件复制到
/sdcard,在电脑上修改后再复制回去覆盖原来的文件,然后要修改文件的权限.下面的文件权限截图是按原文件的权限.
/data/location/location.cfg 文件权限截图
/system/etc/location.cfg
文件权限截图
修改supl服务器地址,用于网络辅助时快速下载到星历,大幅提高搜星速度,这也是为何建议开启使用网络辅助进行GPS定位
找到以下两项
hslp_address = lbs.geo.:7275&&--
这个服务器地址不一定一样,例如我的是 :7275
default_hslp_address = lbs.geo.:7275&&--
这个服务器地址不一定一样,例如我的是 :7275
hslp_address =&:7276&
default_hslp_address
上面这个nokia的supl服务器在我这里的电脑上可以快速打开,而原来的motorola的则打不开,下面还有其他的supl服务器,各位可以自行在电脑上输入打开看看哪个速度快就选哪个.【本人测试,在电脑上都打不开,但是用:7276这个确实可以使用】
继续找到以下项目进行修改
DL_LCS_SUPL_SECURITY_ON = 1
DL_LCS_SUPL_SECURITY_ON = 0
DL_DB_FEATURE_ID_LOCATION_STATE
DL_DB_FEATURE_ID_LOCATION_STATE = 0
DL_LCS_SUPL_MT_OFF = 0
DL_LCS_SUPL_MT_OFF = 1
DL_LCS_SUPL_CARRIER_INDEPENDENT = 0
DL_LCS_SUPL_CARRIER_INDEPENDENT = 1
以上这些项目原帖也没说明,跟着改就ok,反正我的机上改完后从原来搜不到星变成快速搜星并定位.
找到以下项目并删除
DL_LCS_DEFAULT_DATA_PROFILE = cmnet
!!!!重要!!!!
上面这个是A-GPS默认使用APN接入点设置,将其值改为你的2G/3G互联网数据接入点APN名, 例如我移动2G就改成
说明:这个其赋值的意思是连接到缺省/指定的APN,原装的值是cingularwap,指向了AT&T的cingular.国内是用不上的.将其改成你手机接入互联网的APN接入点,另外该APN接入点设置里面最后一项
要设置为 "default,supl,dun"【本人并没有找到这项,也没有修改这项,但是随后的测试使用中并不影响。】
将 /data/location/location.cfg 和 /system/etc/location.cfg
两个位置的文件都修改完毕后,先打开GPS功能,和数据连接功能,然后重新启动手机。重启后,进入GPS测试软件测试一下搜星定位.
如果你的location.cfg文件已经和上面修改后的一样,而你的Defy仍然是GPS搜星定位困难,那你就考虑一下是否要刷个GPS给力的ROM或另找方法了.
如果嫌修改太麻烦,可以使用我改好的location.cfg文件
注意放在/system/etc/location.cfg&和/data/location/location.cfg&的文件要对应覆盖。
使用: 解压后将文件分别复制到 /data/location/ 和
/system/etc/
覆盖掉原文件,复制文件后按照上面的权限截图修改文件权限,覆盖文件前自行备份.
两个文件从这里下载:
文件覆盖好之后,同样,打开GPS功能和数据连接功能,然后重启手机(这样是为了GPS信息的完全初始化)【这个原因的详细分析参考这里:】,然后ENJOY吧。
=================================================================================================
其他相关帖子总结:
Defy GPS搜星速度慢,不能定位等问题的改善方法,亲测能快速搜到10颗星
加快GPS定位,附上多Supl服务器
&GPS如果能搜星不能定位的请看这里。(有机油要软件,已附上)]定位慢是因为2.2的原因
小米手机GPS无法定位 GPS在室外也不能定位(解)
手机GPS不能定位? 用GPS除错工具-GPS测试仪(GPS Test) 支持显示GPS坐标,指南针
China -- cn.pool.ntp.org
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。摘要:各种坐标体系之间如何转换?到底有哪些坐标体系?什么是火星坐标?为什么我的坐标,在地图上显示会有偏移?本文详细解答以上问题。最后给出坐标拾取工具。
---------------------------------------------------------------------------------------------------------------------------
一、坐标体系
首先我们要明白,开发者能接触到哪些坐标体系呢?
第一种分类:
1、& GPS,WGS-84,原始坐标体系。一般用国际标准的GPS记录仪记录下来的坐标,都是GPS的坐标。很可惜,在中国,任何一个地图产品都不允许使用GPS坐标,据说是为了保密。GPS坐标形式如图,度分秒形式的经纬度:
2、& GCJ-02,国测局02年发布的坐标体系。又称&火星坐标&。在中国,必须至少使用GCJ-02的坐标体系。比如谷歌,腾讯,高德都在用这个坐标体系。GCJ-02也是国内最广泛使用的坐标体系。
3、& 其他坐标体系。一般都是由GCJ-02进过偏移算法得到的。这种体系就根据每个公司的不同,坐标体系都不一样了。比如,百度和搜狗就使用自己的坐标体系,与其他坐标体系不兼容。
第二种分类:
首先明白,所有坐标体系的原点,都是非洲。
1、& 经纬度。这个是球面坐标,对于北京来说,就是(116..935961)这样的坐标。比如腾讯、高德、百度都是这样的经纬度坐标。谷歌是经纬度顺序写反的经纬度坐标。
如果是度分秒坐标,需要进行转换,才能得到这样的经纬度坐标。详见坐标转换。
2、& 墨卡托坐标。平面坐标,相当于是直线距离,数字一般都比较大,像这样的。(526.)
墨卡托坐标,主要用于程序的后台计算。直线距离嘛,加加减减几乎计算方便。
搜狗地图API就是直接使用的墨卡托坐标。
二、坐标转换
在各种web端平台,或者高德、腾讯、百度上取到的坐标,都不是GPS坐标,都是GCJ-02坐标,或者自己的偏移坐标系。
比如,你在谷歌地图API,高德地图API,腾讯地图API上取到的,都是GCJ-02坐标,他们三家都是通用的,也适用于大部分地图API产品,以及他们的地图产品。
例外,百度API上取到的,是BD-09坐标,只适用于百度地图相关产品。
例外,搜狗API上取到的,是搜狗坐标,只适用于搜狗地图相关产品。
例外,谷歌地球,google earth上取到的,是GPS坐标,而且是度分秒形式的经纬度坐标。在国内不允许使用。必须转换为GCJ-02坐标。
1、度分秒坐标转换为经纬度
比如,在GPS记录仪,或者google earth上采集到的是39&31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。
2、& GPS转换为GCJ-02坐标
谷歌,高德,腾讯的地图API官网上,都不直接提供这样的坐标转换。如果要得到GCJ-02坐标,最好在他们的地图上直接取点,或者通过地址解析得到。(这个工具我后续会贴出来的。我就爱干这样的事情,哈哈。)
不过,在网上搜到了这样的接口,该接口的type=1就是GPS转到GCJ-02的墨卡托坐标。请大家对接口保密,哈哈。详见:
3、GCJ-02与BD-09之间互转
国测局GCJ-02坐标体系(谷歌、高德、腾讯),与百度坐标BD-09体系的转换,在CSDN上有很详细的讲解:
不过也有更简单的算法,线性算法(lat和lng是经纬度,球面坐标):
To_B是转到百度,To_G是转到GCJ-02。
var TO_BLNG = function(lng){return
lng+0.0065;};
var TO_BLAT = function(lat){return
lat+0.0060;};
var TO_GLNG = function(lng){return
lng-0.0065;};
var TO_GLAT = function(lat){return
lat-0.0060;};
4、经纬纬度转成墨卡托
网上也有详细讲解:
5、各家API公司坐标转换接口的申请
一般需要将您的公司名称、项目名称、项目简介、联系人和联系方式,发邮件至地图API公司的商务部,经过申请,才能使用。
下面是他们的联系方式:
这个,国内没有公交接口,大家应该不会再使用了吧。
(大家发现没,高德是api,腾讯和百度是mapapi,说明什么?)
三、坐标偏移
如果您的坐标在转换之后,还有偏移,那么考虑以下几个方面。
A、原始坐标系弄错,比如以为自己是GPS坐标,但其实已经是GCJ-02坐标。
解决方案:请确保采集到的数据是哪个坐标体系,需要转换到哪个坐标系,再进行坐标转换。
B、原始坐标准确度不够
解决方案:如果您是GPS坐标,请确保采集GPS数据时,搜到至少4颗以上的卫星。并且GPS数据准不准,还取决于周围建筑物的高度,越高越不准,因为有遮挡。
如果本来就是GCJ-02坐标,在不同地图放大级别的时候,看到的地方可能不一样。比如你在地图级别4(国家)取到的坐标,放大到地图12级(街道)时,坐标就偏了。请确保在地图最大放大级别时,拾取坐标。
C、度分秒的概念混淆
比如,在google earth上采集到的是39&31'20.51,那么应该这样换算,31分就是31/60度,20.51秒就是20.51/3600度,结果就是39 + 31/60 + 20.51/3600 度。
D、经纬度顺序写反了
有些公司(比如高德,百度,腾讯)是先经度,再纬度,即Point(lng, lat)。但谷歌坐标的顺序恰好相反,是(lat, lng)。
四、坐标拾取工具
既然在国内必须至少使用GCJ-02的坐标系,而GCJ-02,&火星坐标&是在国内最广泛使用的坐标体系。那么,我们就来看看,如何直接获取到GCJ-02坐标呗。
请大家把这段代码保存到记事本里,然后后缀名改为.html,记得用UTF-8编码来保存。然后双击这个文件,就能打开网页了。
注册你自己的key,填在源代码里哦:&
&!DOCTYPE HTML&
&meta http-equiv="Content-Type" content="text/ charset=utf-8"&
&title&火星坐标拾取&/title&
&script language="javascript" src="/maps?v=1.2&key=您的key"&&/script&
#iMap{height:
.info{float:left;margin:
&div id="iMap"&&/div&
&div class="info"&
&p&&label&火星坐标:&/label&&span id="lnglat"&&&/span&&/p&
&p&&label&地址:&/label&&span id="iAddress"&&&/span&&/p&
&p&说明:&/p&
&p&1、鼠标滚轮可以缩放地图,拖动地图。&/p&
&p&2、点击地图,即可获得GCJ-02的经纬度坐标,地址。&/p&
&script language="javascript"&
var lnglatXY;
//初始化地图
function mapInit(){
var opt = {
level: 13, //设置地图缩放级别
center: new AMap.LngLat(116.397428, 39.90923) //设置地图中心点
mapObj = new AMap.Map("iMap", opt);
AMap.event.addListener(mapObj,'click',getLnglat); //点击事件
function geocoder() {
//加载地理编码插件
mapObj.plugin(["AMap.Geocoder"], function() {
MGeocoder = new AMap.Geocoder({
radius: 1000,
extensions: "all"
//返回地理编码结果
AMap.event.addListener(MGeocoder, "complete", geocoder_CallBack);
//逆地理编码
MGeocoder.getAddress(lnglatXY);
var marker = new AMap.Marker({
map:mapObj,
icon: new AMap.Icon({
image: "/Public/images/js/mark.png",
size:new AMap.Size(58,30),
imageOffset: new AMap.Pixel(-32, -0)
position: lnglatXY,
offset: new AMap.Pixel(-5,-30)
mapObj.setFitView();
//回调函数
function geocoder_CallBack(data) {
//返回地址描述
address = data.regeocode.formattedA
//返回结果拼接输出
document.getElementById("iAddress").innerHTML =
//鼠标点击,获取经纬度坐标
function getLnglat(e){
mapObj.clearMap();
var x = e.lnglat.getLng();
var y = e.lnglat.getLat();
document.getElementById("lnglat").innerHTML = x + "," +
lnglatXY = new AMap.LngLat(x,y);
geocoder();
打开之后,是这样的:
&点击一下地图,即可获得GCJ-02坐标,地址:
demo地址:
高德官方坐标拾取工具:
阅读(...) 评论()