0

我有许多 kml 文件,每个文件只有 1 个路径。如何从 kml 获取坐标并将它们转换为一个数组,每组坐标都嵌套在它们自己的数组中?

示例数组:[[lat1, long1],[lat2, long2],[lat3,long3]]

我更喜欢javascript,但我也可以做php。

示例公里:http://98.214.131.200/Routes/test.kml

4

3 回答 3

1

geoxml3可以用作独立的解析器(尽管在该模式下没有经过特别好的测试)。如果你想要折线,你可能想要 polys 分支而不是树干。

坐标数组与您请求的格式不完全一致,如下所示:

placemarks[].LineString[].coordinates[].{lat:Float, lng:Float, alt:Float}

如果您的每个 kml 文件都有一个“路径”,则数组可能是:

placemarks[0].LineString[0].coordinates

也可以作为 google.maps.Polyline 对象使用。

这是geoxml3 显示的示例 kml ,如果您使用调试器浏览页面,您可以看到坐标数组。

于 2012-07-12T02:19:14.020 回答
0

使用即在大多数 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);
于 2012-07-12T00:57:49.143 回答
0
<?php
$xmlFile = '73---5.kml';
$xmlString = file_get_contents($xmlFile);
$doc = new DomDocument();
$doc->loadXML($xmlString);
$xpath = new DomXpath($doc);
$ward_names=array();
$searchNodes = $doc->getElementsByTagName( "coordinates" );   
foreach( $searchNodes as $searchNode ) 
{ 

   $ward_names [] =  $searchNode->nodeValue; 

}


 $string_version = implode(' ', $ward_names) ;
 $destination_array = explode(' ', $string_version);


echo "<pre>";
 print_r($destination_array);

 ?>
于 2018-04-26T05:36:43.043 回答