Android将坐标字符串变量转换为Point

时间:2014-11-24 03:12:02

标签: android map

如果我正在检索类似这样的字符串变量(34872.1297,41551.7292),那么它将是“(34872.1297,41551.7292)”,如何将此字符串变量转换为Point(Geolocation)?

例如,这会设置点值,但我希望检索值

Point point = new Point(34872.1297,41551.7292);

2 个答案:

答案 0 :(得分:1)

您正在寻找的是how to split a string,并且有一些很好的例子可以让您仔细阅读。

在您的情况下,这将有效:

String yourString = "(34872.1297,41551.7292)";

// Strip out parentheses and split the string on ","
String[] items = yourString.replaceAll("[()]", "").split("\\s*,\\s*"));

// Now you have a String[] (items) with the values "34872.1297" and "41551.7292"
// Get the x and y values as Floats
Float x = Float.parseFloat(items[0]);
Float y = Float.parseFloat(items[1]);

// Do with them what you like (I think you mean LatLng instead of Point)
LatLng latLng = new LatLng(x, y);

添加空值检查和解析异常等。

答案 1 :(得分:1)

将地理坐标存储为Point对象的问题是Point实际上要求两个值为整数类型。所以你会失去信息。

因此,您可以提取并输入将坐标转换为整数(但丢失信息):

String geo =  "(34872.1297,41551.7292)";

// REMOVE BRACKETS, AND WHITE SPACES
geo = geo.replace(")", "");   
geo = geo.replace("(", "");
geo = geo.replace(" ", "");

// SEPARATE THE LONGITUDE AND LATITUDE 
String[] split = geo.split(",");

// ASSIGN LONGITUDE AND LATITUDE TO POINT AS INTEGERS
Point point = new Point((int) split[0], (int) split[1]);

或者,您可以将它们提取为浮点数,并将它们存储在您选择的其他数据类型中。

String geo =  "(34872.1297,41551.7292)";

// REMOVE BRACKETS, AND WHITE SPACES
geo = geo.replace(")", "");      
geo = geo.replace("(", "");
geo = geo.replace(" ", "");

// SEPARATE THE LONGITUDE AND LATITUDE 
String[] split = geo.split(",");

// ASSIGN LONGITUDE AND LATITUDE TO POINT AS INTEGERS
Float long = (float) split[0]; 
Float lat = (float) split[1];

已编辑:已将geo.split(“:”)更改为代码中的geo.split(“,”)(感谢Jitesh)