Hinzufügen von marker einfach clusterers, um google-Karte
Ich habe Probleme mit dem hinzufügen von marker-clusterers Funktionalität meiner Karte. Was ich will ist die Verwendung eines benutzerdefinierten symbols für meine Marker und jeder marker sein eigenes info-Fenster, die ich möchte in der Lage sein, zu Bearbeiten.
Habe ich erledigt, aber jetzt habe ich Probleme mit dem hinzufügen marker clusterers Bibliothek-Funktionalität. Ich lese etwas über das hinzufügen von Marker-array, aber ich bin mir nicht sicher, was würde es genau bedeuten. Außerdem werden alle Beispiele mit Arrays, die ich gefunden habe, haben keine info-Fenstern und die Suche durch den code, den ich nicht finden geeignete Weg, um Sie hinzuzufügen.
Hier ist mein code (meist aus Geocodezip.com):
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js"></script>
<style type="text/css">
html, body { height: 100%; }
</style>
<script type="text/javascript">
//<![CDATA[
var map = null;
function initialize() {
var myOptions = {
zoom: 8,
center: new google.maps.LatLng(43.907787,-79.359741),
mapTypeControl: true,
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
navigationControl: true,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"),
myOptions);
var mcOptions = {gridSize: 50, maxZoom: 15};
var mc = new MarkerClusterer(map, [], mcOptions);
google.maps.event.addListener(map, 'click', function() {
infowindow.close();
});
//Add markers to the map
//Set up three markers with info windows
var point = new google.maps.LatLng(43.65654,-79.90138);
var marker1 = createMarker(point,'Abc');
var point = new google.maps.LatLng(43.91892,-78.89231);
var marker2 = createMarker(point,'Abc');
var point = new google.maps.LatLng(43.82589,-79.10040);
var marker3 = createMarker(point,'Abc');
var markerArray = new Array(marker1, marker2, marker3);
mc.addMarkers(markerArray, true);
}
var infowindow = new google.maps.InfoWindow(
{
size: new google.maps.Size(150,50)
});
function createMarker(latlng, html) {
var image = '/321.png';
var contentString = html;
var marker = new google.maps.Marker({
position: latlng,
map: map,
icon: image,
zIndex: Math.round(latlng.lat()*-100000)<<5
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.setContent(contentString);
infowindow.open(map,marker);
});
}
//]]>
</script>
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist die Arbeit jsfiddle demo
Sobald Sie eine Markierung erstellen-cluster, die Sie hinzufügen möchten, Marker zu. MarkerClusterer unterstützt hinzufügen von Markern mit Hilfe der
addMarker()
undaddMarkers()
- Methode oder durch die Bereitstellung einer Reihe von Markierungen, die an den Konstruktor:Wenn Sie sagen, fügen Sie marker an den Konstruktor, indem Sie eine Reihe von Markern ist es ähnlich, dies zu tun:
Hinzufügen, dass es mit
addMarker()
Sie im Grunde fügen Sie die cluster wie folgt:oder wenn Sie wollen, um ein array hinzuzufügen:
Hier ist der Verweis auf MarkerClusterer und Einfache Beispiele
Basierend auf Schnipsel Ihres Codes, den Sie wollen würde, so etwas zu tun:
Sie nicht schaffen Ihre Macher korrekt benennen Sie alle Ihre marker auf die gleiche var
marker
so sind Sie eigentlich die Schaffung von drei Markern und es wird über geschrieben, wenn Sie es speichern in der var marker jedes mal. Also ging ich auf und benennen Sie Ihre Marker. Dann habe ich ein array zu speichern und pass auf das MarkerClusterer.UPDATE: zu Ihrer
createMarker
Funktion, mit der man nicht zurückkehren, die marker und dann gibt es keine marker, um cluster:console.log
im Skript versuchen Sie diesen link jetzt jsfiddle.net/rD8U6/6var mcOptions = {gridSize: 50, maxZoom: 15};
. das sind wirklich gute Fragen, die Sie sollten es veröffentlichenzIndex: Math.round(latlng.lat()*-10000) << 5
ist ein bitshift-operation:Shifts a in binary representation b (< 32) bits to the left, shifting in zeros from the right.
var marker
ich bevorzuge die später, weil es sauberer Codierung und ist besser lesbar