如何获取kml文件的坐标android

时间:2016-01-29 15:34:19

标签: android gps kml

我想接收kml文件中的点的坐标。 我创建了一个接收坐标的对象,但我找不到如何从文件中获取它们。

到目前为止所做的一个例子:
(点的数量是132,但我缩短了它以便能够在这里出现。)

Kml文件:

<LinearRing>
                <coordinates>
                    34.79991805485883,32.070779943443,0
                    34.799829164854,32.07080649750882,0
                    34.79971023480251,32.07083335300256,0
                    34.79959122858838,32.07086022634235,0
                    34.79947508289758,32.07091343448649,0
                    34.79935881388468,32.07096669690968,0
                    34.79923664471844,32.07096729415576,0
                    34.79912177286835,32.07104658864036,0
                </coordinates>
<LinearRing>

在代码中:

   int i =0; 
   for (KmlContainer containers : kmlLayer.getContainers()) {
       poly[i] =new PointPoly(containers);
       i++;
     }

代码不起作用。 非常感谢帮助。

2 个答案:

答案 0 :(得分:1)

首先确保你得到包含坐标的字符串 (<coordinates>标签之间的文字) 然后使用

String[] coords3d = coordStr.split(" ");

分成lon,lat,高度字符串数组。 循环遍历该数组并使用

拆分每个字符串
String[] coordLatLonAltitude = coord.split(",");

分为单独的纬度,经度和海拔值。

答案 1 :(得分:1)

List<LatLng> points = new ArrayList<>();
for (KmlContainer c : kmlLayer.getContainers()) {
    for (KmlPlacemark p : c.getPlacemarks()) {
        KmlGeometry g = p.getGeometry();
        if (g.getGeometryType().equals("LineString")) {
            points.addAll((Collection<? extends LatLng>) g.getGeometryObject());
        }
    }
}

GeometryType在您的kml文件上可能有所不同,例如“LinearRing”。但基本上这是我的工作代码。