Je suis nouveau dans google maps et j'essaie de l'apprendre.
marker = new google.maps.Marker(
{
map:map,
draggable:true,
animation: google.maps.Animation.DROP,
position: results[0].geometry.location
});
Ceci est ma position de marqueur, lorsque je l'initialise, je connais le nom du lieu (par exemple: XY street, New York,), mais en raison de l'option déplaçable, cela change le nouveau nom de lieu, de quel gestionnaire d'événements ai-je besoin.
Finalement j'ai trouvé la réponse:
marker = new google.maps.Marker(
{
map:map,
draggable:true,
animation: google.maps.Animation.DROP,
position: results[0].geometry.location
});
google.maps.event.addListener(marker, 'dragend', function()
{
geocodePosition(marker.getPosition());
});
function geocodePosition(pos)
{
geocoder = new google.maps.Geocoder();
geocoder.geocode
({
latLng: pos
},
function(results, status)
{
if (status == google.maps.GeocoderStatus.OK)
{
$("#mapSearchInput").val(results[0].formatted_address);
$("#mapErrorMsg").hide(100);
}
else
{
$("#mapErrorMsg").html('Cannot determine address at this location.'+status).show(100);
}
}
);
}
Définir une position sur la carte à l'aide de lat/lang et rendre le marqueur déplaçable
L'utilisation de lat/lang définit initialement un marqueur à un point donné sur la carte
La variable d'adresse est utilisée pour le titre. Il peut être ignoré.
draggable: true rend le marqueur déplaçable.
Utiliser l'écouteur d'événements google.maps.event.addListener (marqueur, 'glisser-déposer', fonction (marqueur) Pour écouter les changements dans la position du marqueur
function showMap(lat,lang,address) {
var myLatLng = {lat: lat, lng: lang};
var map = new google.maps.Map(document.getElementById('map_canvas'), {
zoom: 17,
center: myLatLng
});
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
title: address,
draggable:true,
});
google.maps.event.addListener(marker, 'dragend', function(marker){
var latLng = marker.latLng;
currentLatitude = latLng.lat();
currentLongitude = latLng.lng();
jQ("#latitude").val(currentLatitude);
jQ("#longitude").val(currentLongitude);
});
}
Veuillez suivre les trois étapes ci-dessous pour obtenir un marqueur glissable avec la position dans la zone de texte.
CSS
<style>
#map {
height: 400px;
width: 100%;
}
</style>
HTML
<div id="map"></div>
Latitude <input type="text" id="la" name="latitude" value="28.39" > Longitude<input type="text" id="lo" name="longitude" value="84.12" >
JavaScript
<script>
/**
*Receiving the value of text box and type done conversion by Number()
*/
var latitude = Number(document.getElementById("la").value);
var longitude = Number(document.getElementById("lo").value);
function initMap() {
/**
*Passing the value of variable received from text box
**/
var uluru = {lat: latitude, lng: longitude};
var map = new google.maps.Map(document.getElementById('map'),
{zoom: 7,center: uluru}
);
marker = new google.maps.Marker(
{
map:map,
draggable:true,
animation: google.maps.Animation.DROP,
position: uluru
}
);
google.maps.event.addListener(marker, 'dragend',
function(marker){
var latLng = marker.latLng;
currentLatitude = latLng.lat();
currentLongitude = latLng.lng();
$("#la").val(currentLatitude);
$("#lo").val(currentLongitude);
}
);
}
</script>
<!--Google Map API Link-->
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOURAPIKEYHERE&callback=initMap">
</script>
NOTE: Veuillez utiliser Jquery en tête