2016-06-13 96 views
0

我正在使用公共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文件中只提取一个地标并将其显示在地图上。

任何想法? 谢谢!

回答

1

我想每次只能通过路线编号访问一个地标。

通过阅读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