Java Script (Google Maps) in PHP einbetten?

Rayne

Erfahrenes Mitglied
Hallo liebe Leute :)

Ich möchte auf einer Website eine Google-Karte einbinden, auf der automatisch die Koordinaten eines bestimmten Ortes eingebunden und angezeigt werden. Dazu habe ich mir einen Google-Api-Key besorgt und den entsprechenden Code eingebunden. Das klappt soweit auch ganz gut, nur möchte ich die Koordinaten nicht per Hand eingeben, sondern via Custom Field (Wordpress) automatisch holen lassen.

Das Problem ist allerdings, dass der Google-Code Java-Script ist und der Befehl für die Custom Fields PHP. Anscheinend kann man innerhalb von Java Script kein PHP einbinden, jedenfalls hat das nicht geklappt.

Gibt es nun eine Möglichkeit, einfach den JS-Code von PHP umschließen zu lassen? Ich hatte das auch schon probiert, aber nur Fehler ausgegeben bekommen, da ich dabei anscheinend was falsch gemacht habe. Meine Kentnisse in JS und PHP sind auch sehr gering.

So sieht der Google-Code aus:

Code:
<script type="text/javascript">

    function initialize() {

    var map = new GMap2(document.getElementById("map_canvas"));

    map.setCenter(new GLatLng(12.3456789123456, 12.3456789123456), 13);


    var map = new GMap2(document.getElementById("map_canvas"));

    map.setCenter(new GLatLng(12.3456789123456, 12.3456789123456), 13);

    map.openInfoWindow(map.getCenter(),

    document.createTextNode("Text hier"));

    var point = new GLatLng(12.3456789123456, 12.3456789123456);

    map.addOverlay(new GMarker(point));

}

    </script>

Der Befehl zum Aufruf eines Custom Fields lautet:

Code:
<?php echo get_post_meta($post->ID, 'lat', true); ?>
Code:
<?php echo get_post_meta($post->ID, 'lng', true); ?>

Dieses Custom Field soll nun jeweils an die Stelle kommen, wo jetzt "12.3456789123456" steht.

Könnt ihr mir bitte bei der Umsetzung helfen? Das wäre wirklich super! :)

Vielen Dank schon im Voraus!
 
Hi,
soweit ich weiß brauchst du keinen Google-Api-Key mehr, das war für die API V2 noch nötig, seit der Version 3 ist es aber nicht mehr nötig. Mehr dazu HIER

Dann zu deiner eigentlichen Frage:
Es ist mögliche mit php ganz normalen Javascript-Code zu erzeugen, in deinem Beispiel einfach:

PHP:
var point = new GLatLng(<?php echo get_post_meta($post->ID, 'lat', true); ?>, <?php echo get_post_meta($post->ID, 'lng', true); ?>);
 
Hi

Warum machst du beim Javascript alles mehrfach?
Die ersten zwei Codezeilen sind mit 3/4 identisch,
und das GLatLng-Objekt gibts gleich dreifach.
einfach so:
Javascript:
<script type="text/javascript">

    function initialize() {

    var map = new GMap2(document.getElementById("map_canvas"));
<?php echo 'map.setCenter(new GLatLng('.get_post_meta($post->ID, 'lat', true).', '.get_post_meta($post->ID, 'lat', true).'), 13);'; ?>

    var map = new GMap2(document.getElementById("map_canvas"));

    <?php echo 'map.setCenter(new GLatLng('.get_post_meta($post->ID, 'lat', true).', '.get_post_meta($post->ID, 'lat', true).'), 13);'; ?>

    map.openInfoWindow(map.getCenter(),

    document.createTextNode("Text hier"));

    <?php echo 'var point = new GLatLng('.get_post_meta($post->ID, 'lat', true).', '.get_post_meta($post->ID, 'lat', true).');'; ?>
    map.addOverlay(new GMarker(point));

}

    </script>
und die .html-Datei in .php umbenennen.

Gruß
 
Oh super, das hat geklappt! Da hatte ich wohl einen kleinen Fehler irgendwo eingebaut. Nun funktioniert es :) Danke!

Habt ihr zufällig noch eine Idee, wie ich in das Info-Fenster einen Umbruch einfügen kann?

Der Code dafür:

Code:
map.openInfoWindow(map.getCenter(),

document.createTextNode("<?php echo get_post_meta($post->ID, 'store', true); ?><?php echo get_post_meta($post->ID, 'street', true); ?>"));

Zwischen den beiden echos möchte ich einen Umbruch einfügen, habs schon mit "<br>", <br>, '<br>', + '<br>' etc. probiert, aber entweder passiert nichts oder er gibt mir das <br> lediglich als Text aus. Vielleicht wisst ihr ja, wie das geht? Danke :)
 
Code:
\r\n

sollte Abhilfe schaffen

Hm, wie muss ich das denn integrieren, damit es funktioniert? Habe es unter anderem so versucht, aber ohne Erfolg:

Code:
document.createTextNode("<?php echo get_post_meta($post->ID, 'store', true); ?>\r\n<?php echo get_post_meta($post->ID, 'street', true); ?>"));

Code:
document.createTextNode("<?php echo get_post_meta($post->ID, 'store', true); ?>"+"\r\n"+"<?php echo get_post_meta($post->ID, 'street', true); ?>"));

:confused:
 
Zurück