2016-08-05 13 views
0

Fühlen Sie sich verstanden, aber stecken Sie wieder auf neue Artikel ..
Ich versuche, Marker aus der Karte mit erstellt Google Map API.
Ich habe eine Schaltfläche löschen im InfoWindow.setMap funktioniert nicht

enter image description here

Es ist mein Code unten:

function DeleteMarker(index) { 

    console.log(JSON.stringify(markers[index])); 
    markers[index].setMap(null); // problem is here 
    // - setMap is not a function 
    markers[index] = null; 
} 


GMaps.on('click', 
    map.map, 
    function(event) { 

     markers.push(new Point(map.markers.length, event.latLng.lat(), event.latLng.lng())); 

     var index = map.markers.length; 
     var lat = event.latLng.lat(); 
     var lng = event.latLng.lng(); 
     map.addMarker({ 
      lat: lat, 
      lng: lng, 
      title: 'marker' + index, 
      infoWindow: { 
       content: '<p>Details:' 
       + '<p>Latitude:' + event.latLng.lat() + '</p>' 
       + '<p>Longitude:' + event.latLng.lng() + '</p>'+ 
       '<button id ="btnDeleteMarker" onclick=DeleteMarker(\'' + index + '\')>Delete this stop</button>' 
      } 
     }); 
     console.log(JSON.stringify(markers)); 
     map.markers[index].infoWindow.open(map.map, map.markers[index]); 
}); 

Was ist falsch? Was sollte ich wissen, um es richtig zu benutzen?

+0

Bitte geben Sie eine [mcve], die Ihr Problem zeigt. – geocodezip

+0

sieht so aus, als sollten Sie 'map.markers [index] .setMap (null)' anstelle von 'markers [index] .setMap (null)' – geocodezip

+1

@geocodezip verwenden. Was möchten Sie wissen? Ich denke, ist minimal, vollständige und überprüfbare Beispiel – whoiskatrin

Antwort

1

Von dem, was ich auf der Google Map API documentation gelesen habe, müssen Sie den Marker aus dem markers array auch entfernen.

Was ich versuchen würde, ist:

  • klar alle Marker aus der Karte
  • dass Marker Index
  • entfernen und dann die Markierungen aus neu zeichnen, was im Array übrig geblieben ist.

Es würde wie folgt aussehen:

function DeleteMarker(index) { 

    console.log(JSON.stringify(markers[index])); 

    setMapOnAll(null);     // Clear all markers from the map 

    var tempArray = markers;   // Create a temporary array 
    unset(tempArray[index]);   // Unset the marker to remove 
    markers = array_values(tempArray); // refresh the markers array 

    setMapOnAll(map);     // Show all markers on the map 

} 

Ich habe das nicht testen ... Ich habe eine Karte für sie zu schaffen.
Aber ich werde, wenn der obige Code fehlschlägt.
;)

+0

yeap, ich habe wie zu reparieren. Danke vielmals! – whoiskatrin

+0

Gern geschehen;) –