不要再搞 android 上的自己定位,没有意义的。即使你搞的 gps/gprs 定位真的准了。你自己试试吧,在 google 地图,百度地图 ... 你得到的经纬度如果用在地图上定位,全部都有 500M 以上的误差。因为这是国家测量局的要求。即所有在中国使用的地图系统,表示出来经纬度都要加密。加密的结果会导致 500M 以上的误差。   我搞了成个月,发现如何定位都是不准,再上网找才发现这个问题。所以你唯一办法,就是使用 google map 的 api 或者 baidu map 的 aip 来得到经纬度,用 百度 api 得出来的经纬度,只能在百度地图上用。同样用 google api 得出来的经纬度,只能在 google 地图上用。
  当然你也可以自己建军一个地图系统.   呵呵 ...

解决方案 »

  1.   

    你这个输出是在location不为的情况下,它应该就是每1s都去获取location信息的,但并不是每次都能获取到的,也就是有可能这次获取的location为空,这样打印的间隔就不会是1s了
      

  2.   

    我觉得应该不是这个原因,其实我也试过了,不管你上面设的是多少s,log打出来的都是间隔差不多50s左右!
      

  3.   

    我认为是mgr.requestLocationUpdates(best, 1000, 1, locationListener);中约定了更新Location的条件, 间隔1秒,距离超过一米.如果没有移动(或发生变化)的话, 应该也是不会触发的.楼主可以用GPX文件测试一下啊. 
    另外一楼说的经纬度加密的问题, 对于百度地图而言可以采用如下的方法进行转换:import com.baidu.mapapi.CoordinateConvert;
    gp1 = new GeoPoint(
    (int) (location.getLatitude() * 1e6),
    (int) (location.getLongitude() * 1e6));
    GeoPoint gp2 = CoordinateConvert.bundleDecode(CoordinateConvert.fromWgs84ToBaidu(gp1));

    Gp1是GPS坐标gp2是转换后的百度坐标。