Martia
28. September 2009 um 23:49
1
Guten Tag und Hallo zusammen,
als Anfängerin mit PHP und Mysql kämpfe ich seit längeren an folgenden Problem:
Ich bekomme aus einer Datenbank Koordinaten in folgender Form:
11.0683,49.4478,0 11.4422,49.1044,0 12.5858,50.9359,0 …
(Nach jedem „,0“ ist ein Leerzeichen. Der String hat keinen Zeilenumbruch.)
Ich muss aus den Koordinaten ein Polygon mit der Google Maps Api erstellen. Dafür brauche ich die Koordinaten in folgenden Format
new GLatLng(49.4478,11.0683),
new GLatLng(49.1044,11.4422),
new GLatLng(50.9359,12.5858), …
Wie bekomme ich meinen Koordinaten String gesplittet und umgedreht?
Ich hoffe Ihr könnt mir helfen, ich verzweifle langsam an dem Problem.
Danke und Grüße aus Taucha.
Martia
Moin,
als Anfängerin mit PHP und Mysql kämpfe ich seit längeren an
folgenden Problem:
Ich bekomme aus einer Datenbank Koordinaten in folgender Form:
11.0683,49.4478,0 11.4422,49.1044,0 12.5858,50.9359,0 …
(Nach jedem „,0“ ist ein Leerzeichen. Der String hat keinen
Zeilenumbruch.)
Ich muss aus den Koordinaten ein Polygon mit der Google Maps
Api erstellen. Dafür brauche ich die Koordinaten in folgenden
Format
new GLatLng(49.4478,11.0683),
new GLatLng(49.1044,11.4422),
new GLatLng(50.9359,12.5858), …
Wie bekomme ich meinen Koordinaten String gesplittet
Schau ins php manual bei
und
umgedreht?
Letzten als Ersten, Vorletzten als Zweiten,…?
Das mit explode erstellte array mittels for-Schleife von hinten nach vorne auslesen und dabei die werte in ein neues array stopfen.
Ich hoffe Ihr könnt mir helfen, ich verzweifle langsam an dem
Problem.
Dann schaffs ab.
Danke und Grüße aus Taucha.
Martia
Bitte.
widecrypt
Eckse
29. September 2009 um 09:46
3
Moin, Martia!
Leerzeichen entfernen
mit substr_replace(), entwerder ’ ’ gegen ‚‘ oder gleich '0 ’ gegen ‚‘.
String teilen
wie bereits gesagt wurde, mit explode() am Komma.
Nach Längen- und Breitenwert sortieren
array_shift() entfernt das erste Element aus einem Array und gibt dieses Element zurück.
while ($derZerlegteString >0){
$lat[] = array_shift($derZerlegteString);
$len[] = array_shift($derZerlegteString);
}
Ausgabe
while ($lat > 0){
new GLatLng(array_shift($lat),array_shift($len)),
}
oder, falls Du die Werte später noch brauchst:
foreach ($lat as $key=\>$l){
new GLatLng($l,$len[$key]),
}
Das sollte so funktionieren. Falls es eleganter geht, lasse ich mich gerne belehren …
Gruß, Caro
Das sollte so funktionieren. Falls es eleganter geht, lasse
ich mich gerne belehren …
Eleganter vielleicht nicht, aber effektiver (denke ich)
$string = „11.0683,49.4478,0 11.4422,49.1044,0 12.5858,50.9359,0 …“;
$trenner = ",0 ";
$array = explode($trenner,$string);
$trenner2 = „,“;
for ($i=0;$i