我正在开发一个使用公共API进行本地传输系统的应用程序。此应用程序的一部分涉及使用maps api在地图上绘制特定公交路线的路径。
很容易将kml图层添加到地图中,如下所示:
KmlLayer layer = new KmlLayer(map, resId, getActivity().getApplicationContext());
layer.addLayerToMap();
问题是,我在一个大文件中给出了~100条路线的kml数据。
这是一个非常文件的小样本:
<?xml version="1.0" encoding="utf-8"?>
<kml xmlns="http://earth.google.com/kml/2.2">
<Document>
<Placemark>
<ExtendedData>
<Data name="route_number">
<value>67</value>
</Data>
<Data name="direction">
<value>0</value>
</Data>
<Data name="route_description">
<value>Bethany/158th</value>
</Data>
<Data name="public_route_number">
<value>67</value>
</Data>
<Data name="direction_description">
<value>To PCC Rock Creek</value>
</Data>
<Data name="frequent">
<value>False</value>
</Data>
<Data name="type">
<value>BUS</value>
</Data>
</ExtendedData>
<MultiGeometry>
<LineString>
<coordinates>-122.858564,45.566031 -122.858623,45.566074 -122.858682,45.566096 -122.858754,45.566103 -122.858829,45.566096 -122.859393,45.565952</coordinates>
</LineString>
<LineString>
<coordinates>-122.859215,45.563005 -122.859429,45.563006 -122.859430,45.563086 -122.859418,45.563214 -122.859404,45.563267 </coordinates>
</LineString>
</MultiGeometry>
</Placemark>
<Placemark>
<ExtendedData>
<Data name="route_number">
<value>67</value>
</Data>
<Data name="direction">
<value>1</value>
</Data>
<Data name="route_description">
<value>Bethany/158th</value>
</Data>
<Data name="public_route_number">
<value>67</value>
</Data>
<Data name="direction_description">
<value>To Merlo Rd/158th Ave</value>
</Data>
<Data name="frequent">
<value>False</value>
</Data>
<Data name="type">
<value>BUS</value>
</Data>
</ExtendedData>
<MultiGeometry>
<LineString>
<coordinates>-122.859393,45.565952 -122.859394,45.565951 -122.859515,45.565912 -122.859605,45.565868 -122.859664,45.565818 -122.859721,45.565759 -122.859753,45.565709 -122.859786,45.565640 -122.859814,45.565569 -122.859710,45.565552 -122.859617,45.565533 </coordinates>
</LineString>
</MultiGeometry>
</Placemark>
</Document>
</kml>
基本上,每条路线都是kml文件中的不同地标。我想通过路线号一次只访问一个地标。
我不确定如何从kml文件中提取一个地标并将其显示在地图上。
有什么想法吗? 谢谢!
答案 0 :(得分:1)
我想通过路线编号一次只访问一个地标。
通过阅读KML Android文档,它提到了如何访问KML placemarks。
代码段:
for (KmlPlacemark placemark : layer.getPlacemarks()) {
// Do something to Placemark
}
要访问容器或地标中的任何属性,请调用getProperty()并为其指定属性键。您还可以调用hasProperty()来检查它是否存在。此示例显示如何从容器中检索属性值“name”(如果存在)。
for (KmlContainer container : layer.getContainers()) {
if (container.hasProperty("name")) {
System.out.println(container.getProperty("name")):
}
}
您还可以尝试使用geoxml3来解析KML并访问各个对象。有关详情,请查看this thread。