2016-05-24 6 views
-1

Ich möchte in jeden Marker auf laden, sobald ein Marker auf die Google-Karte fällt.Wie wird ein Marker verschoben, sobald ein Marker fällt (Google Maps API)?

Ich habe versucht, die panTo und setZoom-Methode innerhalb der Drop-Funktion und der Funktion addMarkerWithTimeout, aber es scheint nicht zu funktionieren. Ich habe die letzten paar Stunden damit verbracht, dieses Problem zu lösen. Hat jemand irgendwelche Ideen?

var neighbors = [ 
    {lat: 41.081445, lng: -81.519005}, 
    {lat: 42.652579, lng: -73.756232}, 
    {lat: 61.218056, lng: -149.900278}, 
    {lat: 32.735687, lng: -97.108066}, 
    ]; 


var markers = []; 
var map; 

function initMap() { 
    map = new google.maps.Map(document.getElementById('googlemapsbackground'), { 
    zoom: 4, 
    center: {lat: 39.8282, lng: -98.5795} 
    }); 
} 

window.onload = function drop() { 
    clearMarkers(); 
    for (var j = 0; j < neighbors.length; j++) { 
    addMarkerWithTimeout(neighbors[j], j * 1000); 
    } 
} 

function addMarkerWithTimeout(position, timeout) { 
    window.setTimeout(function() { 
    markers.push(new google.maps.Marker({ 
     position: position, 
     map: map, 
     animation: google.maps.Animation.DROP 
    })); 
    }, timeout); 
} 

function clearMarkers() { 
    for (var j = 0; j < markers.length; j++) { 
    markers[j].setMap(null); 
    } 
    markers = []; 
} 
+0

Versuchen Sie, 'map.panTo (Position);', sobald Sie einen neuen Marker innerhalb 'setTimeout' Funktion –

+0

habe ich versucht, mit map.panTo (Position); aber es schien nicht zu funktionieren. Danke für Ihre Hilfe! –

Antwort

0

Sie können versuchen, ein LatLngBounds-Objekt zu verwenden.

function addMarkerWithTimeout(position, timeout) { 
    window.setTimeout(function() { 
    var bounds = new google.maps.LatLngBounds(), 
     marker = new google.maps.Marker({ 
      position: position, 
      map: map, 
      animation: google.maps.Animation.DROP 
     }); 

    bounds.extend(marker.getPosition()); 
    markers.push(marker); 
    map.fitBounds(bounds); 
    }, timeout); 
} 
+0

Das hat funktioniert !!!! Ich danke dir sehr. –