2016-06-13 14 views
0

ローカル中継システムにパブリックAPIを使用するアプリケーションで作業しています。このアプリの一部には、マップapiを使用してマップ上の特定のバスルートのパスを描くことが含まれます。Android用GoogleマップAPIのkmlファイルの一部のみを表示する

それはそうのようなマップにKMLレイヤを追加するのは簡単で十分です:

KmlLayer layer = new KmlLayer(map, resId, getActivity().getApplicationContext()); 
    layer.addLayerToMap(); 

問題があり、私は1つの大きなファイルで〜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ファイル内の異なる目印です。経路番号で一度に1つの目印にアクセスしたいのですが。

kmlファイルから目印を1つだけ抽出してマップに表示する方法についてはわかりません。

アイデア? ありがとう!

答えて

1

経路番号で一度に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")): 
    } 
} 

また、KMLを解析し、個々のオブジェクトにアクセスするためのgeoxml3を利用するように試みることができます。詳細は、this threadをチェックしてください。

関連する問題