2017-04-11 67 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}];

创建一个包含两个元素的数组,并在循环中创建两个标记。

相关问题