それぞれにパスが1つだけ作成された多数のkmlファイルがあります。kml から座標を取得し、座標の各セットが独自の配列内にネストされた配列に変換するにはどうすればよいですか?
配列の例: [[lat1, long1],[lat2, long2],[lat3,long3]]
私は JavaScript の方が好きですが、php もできます。
kml の例:http://98.214.131.200/Routes/test.kml
それぞれにパスが1つだけ作成された多数のkmlファイルがあります。kml から座標を取得し、座標の各セットが独自の配列内にネストされた配列に変換するにはどうすればよいですか?
配列の例: [[lat1, long1],[lat2, long2],[lat3,long3]]
私は JavaScript の方が好きですが、php もできます。
kml の例:http://98.214.131.200/Routes/test.kml
geoxml3は、スタンドアロンのパーサーとして使用できます (ただし、そのモードでは十分にテストされていません)。ポリラインが必要な場合は、おそらくトランクではなくポリゴン ブランチが必要です。
座標の配列は、要求した形式ではありません。次のようになります。
placemarks[].LineString[].coordinates[].{lat:Float, lng:Float, alt:Float}
各 kml ファイルに 1 つの「パス」がある場合、配列はおそらく次のようになります。
placemarks[0].LineString[0].coordinates
また、google.maps.Polyline オブジェクトとしても利用できます。
geoxml3 によって表示されるkml の例を次に示します。デバッガーでページを調べてみると、座標の配列が表示されます。
最近のほとんどのphpディストリビューションでデフォルトで有効になっているSimpleXMlを使用します。
$url = "http://98.214.131.200/Routes/test.kml";
$contents = file_get_contents($url);
$xml = new SimpleXMLElement($contents);
$value = (string)$xml->Document->Placemark->LineString->coordinates;
$values = explode(" ", trim($value));
$coords = array();
foreach($values as $value) {
$args = explode(",", $value);
$coords[] = array($args[0], $args[1]);
}
echo '<pre>';
print_r($coords);