Android谷歌地图api只显示kml文件的一部分
问题描述:
我正在使用公共api作为本地交通系统的应用程序。这个应用程序的一部分涉及使用地图api在地图上绘制特定公交路线的路径。Android谷歌地图api只显示kml文件的一部分
这是很容易的KML层添加到地图上,像这样:
KmlLayer layer = new KmlLayer(map, resId, getActivity().getApplicationContext());
layer.addLayerToMap();
的问题是,我给出的KML数据在一个大文件〜100条路线。
这里的文件看起来像一个非常小样本:
<?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文件中只提取一个地标并将其显示在地图上。
任何想法? 谢谢!
答
我想每次只能通过路线编号访问一个地标。
通过阅读KML Android文档,它提到了如何访问KML placemarks。
代码片段:
for (KmlPlacemark placemark : layer.getPlacemarks()) {
// Do something to Placemark
}
要在容器或地标访问任何属性,调用的getProperty(),并给它一个属性键。你也可以调用hasProperty()来检查它是否存在。此示例显示如何从容器中检索属性值“名称”(如果存在)。
for (KmlContainer container : layer.getContainers()) {
if (container.hasProperty("name")) {
System.out.println(container.getProperty("name")):
}
}
您也可以尝试利用geoxml3解析KML和访问单个对象。欲了解更多信息,请查询this thread。