在Google Maps api for Android

时间:2016-06-13 22:37:29

标签: android google-maps

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

有什么想法吗? 谢谢!

1 个答案:

答案 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