2012-04-01 3 views
0

im Erstellen einer Route Dusche mit Geocodierung und Reverse-Geocoding. Funktioniert ganz gut, aber wenn ich Marker ziehen möchte, möchte ich die korrekte Eingabe mit aktualisierter Adresse aktualisieren. Problem ist, dass ich Start- und Endpunkt nicht unterscheiden kann. Mit dem folgenden Code, wenn ich nur 1 Punkt habe, aktualisiert er die Startadresse richtig, aber nach dem Hinzufügen eines anderen Punktes beginnen beide, die gleiche Eingabe zu aktualisieren. (Ich weiß nicht, ob ich eine gute Idee hatte, sie nach der Eigenschaft zu unterscheiden - ich füge diese Punkte zum Array hinzu, und abhängig von ihrer Länge sollte sie die Eigenschaft destination mit 'start' oder 'stop' hinzufügen aktualisiert den Zielwert des vorherigen).Unterscheiden Marker Karten api v3

function placeMarker(location) { 
if(list.length < 2) { 
    marker = new google.maps.Marker({ 
     position: location, 
     map: map, 
     draggable:true, 
     animation: google.maps.Animation.DROP, 
     destination: 'start' 
    }); 
    map.setCenter(location); 
    list.push(marker); 
    if (list.length == 2) { 
     list[1].destination = 'stop'; 
    }; 
    geocoder.geocode({'latLng': location}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (results[0]) { 
       if(list.length == 1) { 
        $('#start').val(results[0].formatted_address); 
       } else { 
        $('#end').val(results[0].formatted_address); 
       } 
      } 
     } 
    }); 
} 
if (list.length == 2) { 
    drawRoute(list[0].getPosition(), list[1].getPosition()); 
}; 
google.maps.event.addListener(marker, 'drag', function(event) { 
    console.log(marker.destination); 
    geocoder.geocode({'latLng': marker.getPosition()}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      if (marker.destination == 'start') { 
       $("#start").val(results[0].formatted_address); 
      } else { 
       $("#end").val(results[0].formatted_address); 
      } 
     } 
    }); 
}); 
}; 

Vielen Dank für Ihre Hilfe!

Antwort

0

Du Befestigung an eventlistener nur eine Markierung, statt

google.maps.event.addListener(marker, 'drag', function(event){...}) 

Sie so etwas wie

google.maps.event.addListener(list[0], 'drag', function(event){...}) 
google.maps.event.addListener(list[1], 'drag', function(event){...}) 

und jene Zuhörer sollten jedes Mal Marker erstellt angebracht werden tun sollten.