我有很多kml文件,每个文件只有一条路径。如何从kml获取坐标并将它们转换为一个数组,每组坐标嵌套在自己的数组中?
示例数组: [[lat1,long1],[lat2,long2],[lat3,long3]]
我更喜欢javascript,但我也可以使用php。
示例kml:http://98.214.131.200/Routes/test.kml
答案 0 :(得分:1)
geoxml3可以用作独立的解析器(尽管在该模式下没有经过特别好的测试)。如果你想要折线,你可能想要聚合分支而不是树干。
坐标数组与您请求的格式不完全相同,如下所示:
placemarks[].LineString[].coordinates[].{lat:Float, lng:Float, alt:Float}
如果你的每个kml文件都有一个“路径”,那么数组可能是:
placemarks[0].LineString[0].coordinates
也可以作为google.maps.Polyline对象使用。
以下是您的示例kml displayed by geoxml3,如果您使用调试器浏览页面,则可以看到坐标数组。
答案 1 :(得分:0)
使用即SimpleXMl,这些日期在大多数php发行版中默认启用std:
$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);
答案 2 :(得分: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);
?>