Übergeben Sie benutzerdefinierte Felder an Google Maps

Ich verwende dieses Skript zur Anzeige von Google Maps auf meiner WordPress-Site:

  function initialize() { var mapProp = { center:new google.maps.LatLng(51.508742,-0.120850), zoom:5, mapTypeId:google.maps.MapTypeId.ROADMAP }; var map=new google.maps.Map(document.getElementById("googleMap",mapProp); }   

Ich habe zwei benutzerdefinierte Felder “fl_long”, “fl” lat “für die Länge und den Breitengrad eingerichtet. Wie ändere ich den obigen Code, so dass die Werte aus den benutzerdefinierten Feldern anstelle von hardcoded Zahlen genommen werden?

 google.maps.event.addDomListener(window, 'load', initialize); 

Solutions Collecting From Web of "Übergeben Sie benutzerdefinierte Felder an Google Maps"

Hier ist eine Version, die wp_localize_script() , wie von anderen vorgeschlagen. Es ist nur ein bisschen sauberer, da Sie nicht Ihre PHP mit Ihrer JS, und in der Regel eine nette Möglichkeit, Dinge von der Server-Seite zu Ihrem JavaScript übergeben.

Erstens, fügen Sie den folgenden Code entweder in Ihrem Plugin oder in Ihrer functions.php ein (ich benutze ein Plugin, also habe ich es entsprechend benannt, aber Sie können es benennen, was Sie wollen):

 function register_plugin_scripts() { wp_register_script('my-coordinates-script', plugins_url( 'my-plugin/js/using-coordinates-here.js' ), 'jquery', '0.1'); global $post; $fl_lat = get_post_meta($post->ID, 'fl_lat', true); // "51.508742" or empty string $fl_long = get_post_meta($post->ID, 'fl_long', true); // "-0.120850" or empty string if( !empty($fl_lat) && !empty($fl_long) ) { wp_localize_script('my-coordinates-script', 'my-coordinates', array( 'lat' => $fl_lat, 'long' => $fl_long ) } wp_enqueue_script( 'my-coordinates-script', plugins_url( 'my-plugin/js/using-coordinates-here.js' ) ); } // end register_plugin_scripts add_action( 'wp_enqueue_scripts', 'register_plugin_scripts' ); 

Beachten Sie, dass der Aufruf von wp_localize_script() zwischen dem Aufruf von wp_register_script() (für die Datei, in der Sie die mit PHP generierten wp_enqueue_script() und dem Aufruf von wp_enqueue_script() . Dies sollte in Ihrer Seitenquelle so aussehen:

   

Dann können Sie innerhalb Ihrer JS-Datei Ihre function verwenden das my-coordinates Objekt:

 function initialize() { lat = 0; long = 0; if (typeof my-coordinates !== 'undefined' && my-coordinates.lat && my-coordinates.long) { lat = my-coordinates.lat; long = my-coordinates.long; } var mapProp = { center: new google.maps.LatLng(lat, long), zoom: 5, mapTypeId: google.maps.MapTypeId.ROADMAP }; var map = new google.maps.Map(document.getElementById("googleMap"), mapProp); } 

Fühlen Sie sich frei, Fragen zu stellen, wenn etwas nicht klar aus dem Code ist.

Versuchen Sie, das Skript mit einem WordPress-Hook zum Kopf hinzuzufügen:

 add_action('wp_head','your_google_head'); function your_google_head(){ $fl_lat = get_post_meta($your_post_id,'fl_lat',true);//$fl_lat = 51.508742; $fl_long = get_post_meta($your_post_id,'fl_long',true);//$fl_long = -0.120850; ?>  < ?php }