Programmatische generieren Google Maps Marker (API v3)
-
28-09-2019 - |
Frage
Ist es möglich, Markierungen in Google programmatisch zu generieren? Zum Beispiel habe ich eine Datenbank von Dienstleistungen und Standorten, dass ich auf Grundstück auf einer Google Map will mit PHP.
Mit der Maps API v3, habe ich eine Karte erstellt und die Dienste fein mit Markierungen und Infofenster aufgetragen, aber was ich will wirklich ist Zahlen generieren tun (1,2,3,4 ... etc.) in der Standard-Marker Blasen in der Reihenfolge an sich von der DB abgerufen erhalten. Auch ich mag die Farbe des Markierungssymbols auf dem Diensttyp in der Datenbank programmatisch Basis ändern.
Ich bin mit PHP, so weiß nicht, ob es ein Skript, dies zu tun, aber ich hatte gehofft, dass Google diese kundenspezifische Marker Generation über die API zur Verfügung stellen würde.
Lösung
spucken PHP Javascript-Code aus.
Hier ist eine kleine Bequemlichkeit Javascript-Funktion, dass ich eine Markierung mit einem Fenster zugeordnet hinzufügen geschrieben.
function add_marker(opts, place) {
var marker = new google.maps.Marker(opts);
marker.place_id = place.id;
markers[place.id] = marker;
var infowindow = new google.maps.InfoWindow({
content: place.details
});
infowindows[place.id] = infowindow;
google.maps.event.addListener(marker, 'click', function() {
infowindows[marker.place_id].open(map,marker);
});
}
So, nachdem er erklärte, dass in einem gewissen javascripty Ort, würden Sie dann einige PHP haben, die wahrscheinlich ähnlich war (und vorausgesetzt, Ihre Karte ist eine globale namens ‚Karte‘):
<script type="text/javascript">
<?php
$count = 0;
foreach ($rowset as $row): ?>
add_marker({
position: new google.maps.LatLng(<?php echo $row->lat ?>, <?php echo $row->lng ?>),
title:<?php echo $row->title ?>,
map:map
}, { id:'<?php echo $count ?>', details:'<?php echo $row->details ?>' });
<?php
$count++;
endforeach; ?>
</script>
Ich habe nichts davon getestet noch habe ich keine Ahnung, was die Daten aussehen, aber das Verfahren sollte für Arbeit, was Sie wollen. Ich bin nicht 100% sicher, was Sie durch individuellen Marker Generation bedeuten, weil es klingt wie Sie bereits das zu tun, nur nicht durch PHP.
Andere Tipps
Die Maps API erfordert, dass Sie ein Bild verwenden (und nicht willkürlich DIV), um Anzeigemarkierungen, so dass Sie die Bilder Server-Seite machen müßten.
Ein einfacher Weg, dies zu tun ist, um den Google Chart API verwendet Markierungssymbole zu machen: http://code.google.com/apis/chart/ docs / gallery / dynamic_icons.html # Pins
Beispiel Ausgabe:
Erzeugt mit: https: //chart.apis. google.com/chart?chst=d_map_pin_letter&chld=C|FF0000|000000
Ich bin mir nicht sicher, ob jemand dieses Problem hatte, aber ich konnte eine Geocodierung nicht Schleife meine Punkte plotten, und Google selbst halte dies für einen Missbrauch ihres Dienstes. Also meine Methode war zu geocode und speichern die lat / long-Koordinaten auf der Stufe Benutzereingabe anstelle der Anzeigestufe, die Bandbreite Spannungsarmglühen es auf Google bringt.
Ich bin nicht sicher, ob dies helfen würde, aber es kann Ihnen vielleicht helfen, Pre-Code und speichern diese Markierungsbilder anstatt sie on the fly zu tun. Wie es mit dem gewählten Antwort steht, setzen Sie auf Google diese Bilder zu produzieren, während die Seite geladen ist, vielleicht können Sie Ihren Dienst zu beschleunigen, indem Sie diesen Code auf einer anderen Stufe laufen und die Ausgabe mit den Koordinaten Speicherung in Ihre PHP-Datenbank.
Cheers,
Dan