将字符串转换为经纬度坐标

22
我正在使用Google Maps API v2,从我的SharedPreferences获取一个包含位置坐标的字符串“-34.8799074,174.7565664”,我需要将其转换为LatLng。 有人可以帮忙吗? 谢谢!

答案:请参考 https://dev59.com/c4Xca4cB1Zd3GeqPDh7Q#26891191 - Pranesh Janarthanan
可能是将经纬度字符串转换为Google Maps API LatLng对象的重复问题。 - Pranesh Janarthanan
3个回答

54

[Google Maps Android API]

您可以通过逗号分隔字符串,然后将字符串解析为long类型。

String[] latlong =  "-34.8799074,174.7565664".split(",");
double latitude = Double.parseDouble(latlong[0]);
double longitude = Double.parseDouble(latlong[1]);
构造具有给定纬度和经度坐标的 LatLng
LatLng location = new LatLng(latitude, longitude);

[Google Maps JavaScript API]

若要使用Maps JavaScript API服务执行相同操作(JSFiddle演示) -

  var latlong =  '-34.397,150.644'.split(',');
  var latitude = parseFloat(latlong[0]);
  var longitude = parseFloat(latlong[1]);
  var mapOptions = {
    zoom: 8,
    center: {lat: latitude, lng: longitude}
  };

与其他答案不同,这个没有解释LatLng是一个类。 - Muz
@Muz 我已经更新了答案,并提供了更多详细信息和用法示例。 - display name

16

首先,您需要在逗号上拆分字符串:

String[] latLng = "-34.8799074,174.7565664".split(",");

这将为您提供两个 String 变量,您需要解析为双精度浮点数,因为 LatLng 构造函数接受位置的纬度和经度的两个双精度浮点数:

double latitude = Double.parseDouble(latLng[0]);
double longitude = Double.parseDouble(latLng[1]);

最后,补充前面的回答,你需要将这些放入一个LatLng对象中,该类是Google Maps经常使用的类:

LatLng location = new LatLng(latitude, longitude);

-1
String convert = "-34.8799074,174.7565664";
Location location = new Location(convert);
LatLng location2 = new LatLng(location.getLatitude(),location.getLongitude());

新的 Location(String) API 接受像 GPS 或网络这样的提供者。但这不会按照你想象的方式转换你的字符串。 - lostintranslation

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接