Мне нужно собрать все координаты с гугл карты kml
файл в одном массиве.
kml
Содержание:
<?xml version='1.0' encoding='UTF-8'?>
<kml xmlns='http://www.opengis.net/kml/2.2'>
<Document>
<name>lago maggiore</name>
<description><![CDATA[]]></description>
<Folder>
<name>Livello senza titolo</name>
<Placemark>
<name>Linea 1</name>
<description><![CDATA[prima parte]]></description>
<styleUrl>#line-000000-1</styleUrl>
<ExtendedData>
</ExtendedData>
<LineString>
<tessellate>1</tessellate>
<coordinates>8.6048698,45.7246374,0.0 8.603754,45.7248771,0.0</coordinates>
</LineString>
</Placemark>
<Placemark>
<name>Linea 2</name>
<description><![CDATA[seconda parte]]></description>
<styleUrl>#line-000000-1</styleUrl>
<ExtendedData>
</ExtendedData>
<LineString>
<tessellate>1</tessellate>
<coordinates>8.8187063,46.1729734,0.0 8.8187706,46.172913900000005,0.0</coordinates>
</LineString>
</Placemark>
<Placemark>
<name>Linea 3</name>
<description><![CDATA[terza parte]]></description>
<styleUrl>#line-000000-1</styleUrl>
<ExtendedData>
</ExtendedData>
<LineString>
<tessellate>1</tessellate>
<coordinates>8.617798100000002,45.9111526,0.0 8.6177766,45.9110257,0.0</coordinates>
</LineString>
</Placemark>
</Folder>
<Folder>
<name>Livello senza titolo</name>
</Folder>
<Folder>
<name>Livello senza titolo</name>
</Folder>
<Style id='line-000000-1-normal'>
<LineStyle>
<color>ff000000</color>
<width>1</width>
</LineStyle>
</Style>
<Style id='line-000000-1-highlight'>
<LineStyle>
<color>ff000000</color>
<width>2.0</width>
</LineStyle>
</Style>
<StyleMap id='line-000000-1'>
<Pair>
<key>normal</key>
<styleUrl>#line-000000-1-normal</styleUrl>
</Pair>
<Pair>
<key>highlight</key>
<styleUrl>#line-000000-1-highlight</styleUrl>
</Pair>
</StyleMap>
</Document>
</kml>
Я пробовал это, но я всегда получал 1 узел координат вместо всех них (3)
($poligono
это правильно kml
файл)
$xml = simplexml_load_file($poligono) or die("file non caricato");
$coords = array();
foreach($xml->Document->Folder->Placemark->children() as $element)
{
foreach($element as $key => $val)
{
foreach($xml->Document->Folder->Placemark->LineString as $element)
{
foreach($element as $key => $val)
{
// echo "{$key}: {$val}" . "<br>";
if ({$key}== 'coordinates')
{
$args = explode(",", {$val});
$coords[] = array($args[0], $args[1], $args[2]);
}
}
}
}
}
Цель состоит в том, чтобы собрать в массиве $ordins [] все координаты, даже если они подразделены на разные подстроки (разные узлы внутри карт Google kml
). Где моя ошибка?
Спасибо за помощь.
Задача ещё не решена.
Других решений пока нет …