Google Maps v3 ensemble unique marqueur de point sur la carte, cliquez
Maintenant j'ai google map code qui permettra de définir un seul marqueur sur une carte. Ce que je veux, c'est pour cette unique marqueur être déplacé à ce que les coordonnées de l'utilisateur clique sur. Je veux seulement 1 marqueur sur la carte, j'ai donc besoin que de marqueur unique pour être déplacé quel que soit l'endroit cliqué. Toute aide est appréciée. Merci!
var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var browserSupportFlag = new Boolean();
function initialize() {
var myOptions = {
zoom: 6,
mapTypeId: google.maps.MapTypeId.HYBRID
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
myListener = google.maps.event.addListener(map, 'click', function(event) {
placeMarker(event.latLng);
google.maps.event.removeListener(myListener);
});
google.maps.event.addListener(map, 'drag', function(event) {
placeMarker(event.latLng);
google.maps.event.removeListener(myListener);
});
//Try W3C Geolocation (Preferred)
if(navigator.geolocation) {
browserSupportFlag = true;
navigator.geolocation.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
map.setCenter(initialLocation);
}, function() {
handleNoGeolocation(browserSupportFlag);
});
//Try Google Gears Geolocation
} else if (google.gears) {
browserSupportFlag = true;
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
map.setCenter(initialLocation);
}, function() {
handleNoGeoLocation(browserSupportFlag);
});
//Browser doesn't support Geolocation
} else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}
function handleNoGeolocation(errorFlag) {
if (errorFlag === true) {
alert("Geolocation service failed.");
initialLocation = newyork;
} else {
alert("Your browser doesn't support geolocation. We've placed you in Siberia.");
initialLocation = siberia;
}
}
function placeMarker(location) {
var marker = new google.maps.Marker({
position: location,
map: map,
draggable: true
});
map.setCenter(location);
var markerPosition = marker.getPosition();
populateInputs(markerPosition);
google.maps.event.addListener(marker, "drag", function (mEvent) {
populateInputs(mEvent.latLng);
});
}
function populateInputs(pos) {
document.getElementById("t1").value=pos.lat()
document.getElementById("t2").value=pos.lng();
}
}
Vous devez vous connecter pour publier un commentaire.
Les réponses actualisées faire beaucoup plus de travail que ce qui est nécessaire par la suppression et re-ajout du marqueur(s). La meilleure façon de le faire est d'utiliser la setPosition() fonction de l'API Google Maps fournit à cet effet.
Ici votre code est modifié pour utiliser setPosition() pour déplacer le pointeur:
Cannot read property 'latLng' of undefined.
montre l'erreur icigoogle.maps.event.addListener(map, 'drag', function (event) { placeMarker(event.latLng); });
Faire une variable javascript "marqueur".
Ensuite dans votre auditeur ajouter le si le marqueur n'existe déclaration et supprimer il si vrai
Vous pouvez essayer:
essayer cette
Burak Erdem réponse fonctionne très bien, mais en fait vous n'avez pas besoin de tableaux et pour ce faire, il suffit d'une var puisqu'il n'est qu'un dernier marqueur, parce que lorsque vous définissez un nouveau, vous supprimez inmediatly le dernier. Je l'ai fait avec ces quelques lignes et il a bien fonctionné:
Que j'ai accompli cela avec les éléments suivants:
Il crée un marqueur, puis le déplacer à chaque clic de souris emplacement...
J'ai également ajouté une goutte de marqueur d'animation ainsi.
Au lieu de créer plusieurs marqueurs cela crée un marqueur et le passe cliqué emplacement.