Je suis un géocodage de données basé sur l'emplacement et l'événement de déplacement de marqueur.Google Maps Drag Marker GeoCode
J'ai le code suivant qui fonctionne bien.
var geocoder;
var map;
var markersArray = [];
var mapOptions = {
center: new google.maps.LatLng(12.971599, 77.594563),
zoom: 14,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
var marker;
function initialize() {
geocoder = new google.maps.Geocoder();
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
codeAddress();
}
google.maps.event.addDomListener(window, 'load', initialize);
$("#gmaps").submit(function() {
codeAddress();
return false;
});
function codeAddress() {
var address = $("#place").val();
geocoder.geocode({
'address': address
}, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
if (marker) marker.setMap(null);
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
draggable: true
});
markersArray.push(marker);
google.maps.event.addListener(map, 'click', function(event) {
clearOverlays() ;
map.panTo(event.latLng);
map.setCenter(event.latLng);
marker = new google.maps.Marker({
map: map,
position: event.latLng,
draggable: true
});
markersArray.push(marker);
document.getElementById('lat').value = marker.getPosition().lat().toFixed(6);
document.getElementById('lng').value = marker.getPosition().lng().toFixed(6);
google.maps.event.addListener(marker, "dragend", function() {
document.getElementById('lat').value = marker.getPosition().lat().toFixed(6);
document.getElementById('lng').value = marker.getPosition().lng().toFixed(6);
});
});
google.maps.event.addListener(marker, "dragend", function() {
document.getElementById('lat').value = marker.getPosition().lat().toFixed(6);
document.getElementById('lng').value = marker.getPosition().lng().toFixed(6);
});
document.getElementById('lat').value = marker.getPosition().lat().toFixed(6);
document.getElementById('lng').value = marker.getPosition().lng().toFixed(6);
} else {
alert('Geocode was not successful for the following reason: ' + status);
}
});
}
// Removes the overlays from the map, but keeps them in the array
function clearOverlays() {
if (markersArray) {
for (i in markersArray) {
markersArray[i].setMap(null);
}
}
}
Je suis inscris l'événement glisser deux fois et que l'enregistrement à l'extérieur du marqueur de clic ne marche pas me permettre de capturer l'événement de déplacement du marqueur nouvellement créé. Comment puis-je enregistrer un glisser sur le marqueur lors de l'ajout d'un nouveau marqueur via un événement click et refactoriser le code pour éliminer les événements d'enregistrement des marqueurs et stocker des données de marqueur inutiles dans le tableau.
Que voulez-vous dire par « Comment puis-je définir et factoriser le code pour éliminer les événements enregistrement des marqueurs et le stockage des données de marqueurs inutiles dans le tableau. »? Qu'est-ce que vous croyez est inutile? Pourquoi? – geocodezip
D'ailleurs, comment avez-vous essayé de faire cela? Quels problèmes avez-vous rencontrés? – geocodezip
@geocodezip le code fonctionne bien. Une fois que j'initialise le marqueur, j'inscris un événement de traînée dessus. Une fois que je clique sur une zone sur la carte, je veux enlever le vieux marqueur et le rendre dragable. deux fois je dois enregistrer le même événement et je me sens mal. –