PHP Ausgabe zerlegen

naheliegend ist die Anzeige als Marker in einer googlemap..

Das war das Thema bis Post #8. Danach ging es darum, irgendwas an irgendwelchem JS-Code zu verändern, damit irgendwas irgendwie besser ist oder so.

Mit der Frage, ob es möglicherweise sogar sinnvoll ist, den Pfad serialisiert abzulegen, will ich gar nicht erst anfangen.
 
mermshaus hat gesagt.:
Mit der Frage, ob es möglicherweise sogar sinnvoll ist, den Pfad serialisiert abzulegen, will ich gar nicht erst anfangen.

Weil?

Soweit ich das Thema verstanden habe, hat der OP eine Google Maps Karte. Diese will er mit Markern befüllen, welche aus einer externen API oder Datei stammen. Auf diese Daten will er mittels PHP zugreifen.
Ich würde vorschlagen, die Daten serialisiert als JSON dem Klienten auf welche Weise auch immer mitzugeben und dann diese auszulesen.
 

Ich meinte das im Gegensatz zu normalisiert, also die Punkte einzeln abzulegen. Das wurde hier ja auch angesprochen (ZodiacXP in #5 etwa). Ich glaube, das führt einfach zu weit (von der Vermittlung her) und bringt auch möglicherweise „nichts“, wenn nur „Strecken“ verwaltet werden sollen (schwer zu beurteilen, weil nicht überragend gut beschrieben). Das kann man im Zweifel auch später mal machen.
 
..es ging doch um die Frage, wie man die Text-Ausgabe irgendwie in JS bekommt. JSON-Encoding in php ist wohl die simpelste Methode, ob nun via php-inline-script oder ajax-Aufruf. Ja, man könnte die Textlinie auch in JS regex'en, ohne php eben, mir recht schnuppe :) Die Umformung für die passende Nutzung ist in php wie auch in JS das leichtere Übel. Was ich nicht vermitteln möchte, sind die Basics von JS.

Beispiel: jQuery Ajax Aufruf für JSON-encoded Daten
(jQuery hat sich übrigens der Vermittlung von JS angenommen - Link)

mfg chmee
 
Eclipse16V hat gesagt.:
Habe im ersten Beitrag ein wenig geändert.
Glaube einige wissen noch nicht so genau was ich meine.
Das hier ist kein StackOverflow o.Ä., wo die Frage immer oben sichtbar ist. Bitte alte Beiträge möglichst nicht ändern, sondern als neuen rein schreiben.

Eclipse16V hat gesagt.:
@ ComFreak
Komme mit dem hier nicht weiter.
http://www.tutorials.de/php/395374-php-ausgabe-zerlegen.html#post2042203
Stehe voll auf dem Schlauch.
Doch zu viel kurz vor der Rente.
Wie, wo, warum kommst du nicht weiter?

Im Folgenden die einfachste Lösung:

Am Besten du erstellt eine neue Datei namens "getMarkers.php" mit folgendem Inhalt:
PHP:
<?php

// $str laden!

$count = preg_match_all('/(\d+\.\d+)/', $str, $matches);

if ($count === false || ($count % 2 != 0)) {
    exit('ERROR');
}
else {
    $pairs = array();

    for ($i = 0; $i < $count; $i+=2) {
        $pairs[] = array($matches[0][$i], $matches[0][$i+1]);
    }

     header('Content-Type: application/javascript');
     // evtl. eine Funktion draus basteln oder was auch immer
     // anstatt der globalen Variable
     echo 'window["markers"] = ' . json_encode($pairs) . ';';
}
$str sollte Daten im folgenden Format beinhalten:
(50.54309395492101, 8.515777587890625)(50.59194113547687, 8.647613525390625)...
Woher du die Daten nimmst, ist egal, ich glaube, du hattest sie aus der Datenbank, oder?

Dann in deiner HTML-Datei:
HTML:
<script src="getMarkers.php"></script>
Danach deine andere JS-Datei, die die Marker darstellen soll. In dieser per Schleife die Daten durchlaufen und jeweils einen Marker erstellen.
 
Meine heilige Fräse. Du musst doch nur den JS-Variablenblock aus Deinem Sourcecode via php nachbauen.
Code:
<script type="text/javascript">
        var paths = [[
<?php
// aus der Textdatei einen Variablenblock machen,
// der sich $extractedData nennt
foreach($extractedData as $point)
{
echo  "new google.maps.LatLng( ".$point[0].",".$point[1].")\r\n";
}
?>
]];

// Und soll aussehen wie das hier
//            new google.maps.LatLng(38.872886, -77.054720),
//            new google.maps.LatLng(38.872602, -77.058046),
//            new google.maps.LatLng(38.870080, -77.058604),
//            new google.maps.LatLng(38.868894, -77.055664),
//            new google.maps.LatLng(38.870598, -77.053346)
// bis Hier.. 


        function initialize() 
        {
            var map = new google.maps.Map(document.getElementById("map"), 
            {
                zoom: 16,
                center: new google.maps.LatLng(38.8714, -77.0556),
                mapTypeId: google.maps.MapTypeId.SATELLITE
            });
 
            var poly = new google.maps.Polygon(
            {
                paths: paths,
                strokeWeight: 3,
                fillColor: '#55FF55',
                fillOpacity: 0.5
            });
 
            poly.setMap(map);
        }
    </script>
Restfehler sind Dein Job.

mfg chmee
 
Zurück