2017-04-11 93 views
-1

我遇到問題。我無法使用JavaScript拖動Google地圖的標記。我在下面解釋我的代碼。無法在Google地圖上使用JavaScript正確拖動標記

geocoder.geocode({ 'address': addrs}, function(results, status) { 
    if (status == google.maps.GeocoderStatus.OK) { 
     $('#latitude').val(results[0].geometry.location.lat()); 
     $('#longitude').val(results[0].geometry.location.lng()); 
     var latitude=results[0].geometry.location.lat(); 
     var longitude=results[0].geometry.location.lng(); 
     var title=document.getElementById('googleMap').value; 
     var desc=title+","+address; 
     console.log(latitude,longitude); 
     var markers = [{"lat":latitude,"lng":longitude},{"title": title,"lat":latitude,"lng":longitude,"description":desc}]; 
    // $window.addEventListener('load', onload, false); 
    // $window.onload = function() { 
    setTimeout(function(){ 
     var mapOptions = { 
     center: new google.maps.LatLng(markers[0].lat, markers[0].lng), 
       zoom: 10, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
       }; 
       var map = new google.maps.Map(document.getElementById("dvMap"), mapOptions); 
       google.maps.event.trigger(map, "resize"); 
       var infoWindow = new google.maps.InfoWindow(); 
       var lat_lng = new Array(); 
       var latlngbounds = new google.maps.LatLngBounds(); 
       for (i = 0; i < markers.length; i++) { 
       var data = markers[i] 
       var myLatlng = new google.maps.LatLng(data.lat, data.lng); 
       lat_lng.push(myLatlng); 
       var marker = new google.maps.Marker({ 
       draggable: true, 
       position: myLatlng, 
       map: map, 
       title: data.title 
       }); 
       latlngbounds.extend(marker.position); 
       (function (marker, data) { 
       google.maps.event.addListener(marker, "click", function (e) { 
       infoWindow.setContent(data.description); 
       infoWindow.open(map, marker); 
       }); 
       })(marker, data); 
       google.maps.event.addListener(marker, 'dragend', function (event) { 
        var latdrag = this.getPosition().lat(); 
        var longdrag= this.getPosition().lng(); 
        console.log('latlong',latdrag,longdrag); 
       }); 
       } 
       map.setCenter(latlngbounds.getCenter()); 
       map.fitBounds(latlngbounds); 
       zoomChangeBoundsListener = 
       google.maps.event.addListenerOnce(map, 'bounds_changed', function(event) { 
if (this.getZoom()){ 
    this.setZoom(12); 
} 
}); 
setTimeout(function(){google.maps.event.removeListener(zoomChangeBoundsListener)}, 2000); 
},2000); 
} 
else { 
    alert("Geocode was not successful for the following reason: " + status); 
       } 
}); 

這裏畝的問題是,我可以能夠拖動標記,但是當我draging一個新的標記來dropable的地方,第一個是仍然存在。在這裏,我需要這個單一的標記只會拖動到任何地方,沒有新的標記將創建。請幫我解決這個問題。

回答

1

您正在同一位置創建兩個標記並拖動頂部。 var latters = [{「lat」:latitude,「lng」:longitude},{「title」:title,「lat」:latitude,「lng」:longitude,「description」:desc}];

創建一個包含兩個元素的數組,並在循環中創建兩個標記。

相關問題