android百度经纬度转gps坐标,GPS经纬度怎么转百度经纬度

GPS经纬度如何转百度经纬度?

本来在Service中直接GPS定位的,发现定位数据在百度地图上偏移比较严重啊,后来才知道百度地图经纬度经过加密了。

在网上搜到可以将GPS经纬度转百度经纬度的

GeoPoint p = new GeoPoint(x, y);

GeoPoint p2 = CoordinateConvert.bundleDecode(CoordinateConvert.fromWgs84ToBaidu(p));

转出来的数据也不是很靠谱啊。

有没有哪位知道手机GPS定位经纬度转百度经纬度的正确方法啊?

或者能否在Service中直接用百度直接定位呢?

------解决方案--------------------

引用:这个好解决,你只要用百度地图定下位,获取到经纬度,

然后用gps定下位,获取到经纬度,作一下对比,算出两者各自差值,  然后用gps获取的经纬度加上差值即可

亲 这个值不是固定的、、、随机的。。。

------解决方案--------------------

不。。。     这是有规律的    。。。。。。。。。。。。。。。。。。信不信由你,反正我信了

我之前是用 android api 获取经纬度 加上差值  精确的显示在百度地图上

试一试,

------解决方案--------------------

这个算法是国家秘密,转换需要在线连到百度进行,下面是我的苦心研究结果,快给分吧:

protected void runTest() throws Throwable {

try {

BaiduLocation bl = new BaiduLocation();

bl.gpsx = 120;//经度

bl.gpsy = 30;//纬度

GetBaiduLocation(bl);

if(bl.ok) {

int baidux = (int)(bl.baidux*1E6);

int baiduy = (int)(bl.baiduy*1E6);

// 转换成功,这个坐标是百度专用的

}

else {

/// 转换失败

}

}

catch(Exception ex) {

}

}

class BaiduLocation {

public float gpsx, gpsy;

public float baidux, baiduy;

public boolean ok = false;

}

public static String GetBaiduLocation(float x, float y) throws MalformedURLException, IOException {

String url = String.format("http://api.map.baidu.com/ag/coord/convert?from=0&to=4&x=%f&y=%f", x, y);

HttpURLConnection urlConnection = (HttpURLConnection)(new URL(url).openConnection());

urlConnection.connect();

BufferedReader reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream()));

String lines = reader.readLine();

reader.close();

urlConnection.disconnect();

return lines;

}

public static boolean GetBaiduLocation(BaiduLocation bl) {

try {

bl.ok = false;

String res = GetBaiduLocation(bl.gpsx, bl.gpsy);

if(res.startsWith("{") && res.endsWith("}")) {

res = res.substring(1, res.length() - 2).replace("\"", "");

String[] lines = res.split(",");

for(String line : lines) {

String[] items = line.split(":");

if(items.length == 2) {

if("error".equals(items[0])) {

bl.ok = "0".equals(items[1]);

}

if("x".equals(items[0])) {

bl.baidux = ConvertBase64(items[1]);

}

if("y".equals(items[0])) {

bl.baiduy = ConvertBase64(items[1]);

}

}

}

}

} catch (Exception e) {

bl.ok = false;

}

return bl.ok;

}

private static float ConvertBase64(String str) {

byte[] bs = Base64.decode(str);

return Float.valueOf(new String(bs));

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值