#google-maps #google-maps-api-3
#javascript #google-карты #google-maps-api-3
Вопрос:
У меня есть 2 текстовых поля для широты и длины, когда пользователь вводит новую запись в БД.
У меня есть предварительный просмотр Google Maps, который отлично работает, теперь я хочу добавить событие щелчка правой кнопкой мыши на карте, которое заполняет текстовые поля lat / lon с нажатой координатой.
Возможно ли это вообще?
Я знаю, как добавить прослушиватель событий, и просмотрел документы API, но не увидел ничего, что делало бы это. Я знаю, что вы можете сделать это на карте Google на их веб-сайте.
Комментарии:
1. я думаю, что я что-то нашел, fromDivPixelToLatLng выглядит хорошо.. Я поэкспериментирую и опубликую решение, если оно сработает
Ответ №1:
google.maps.event.addListener(map, "rightclick", function(event) {
var lat = event.latLng.lat();
var lng = event.latLng.lng();
// populate yor box/field with lat, lng
alert("Lat=" lat "; Lng=" lng);
});
Комментарии:
1. Лол, я потратил почти полдня на написание кода и просто проверил, удалил его, потому что это именно он. Спасибо!!!
2. как вы можете узнать, какой маркер был нажат? сохраняя их в массиве?
3. Тот же код, но изменение «щелчка правой кнопкой мыши» на «щелчок» заставляет его работать для щелчка левой кнопкой мыши. Вы также можете увидеть все события в прямом эфире здесь: developers.google.com/maps/documentation/javascript/events
Ответ №2:
Вы можете создать объект InfoWindow (документация класса здесь ) и прикрепить к нему обработчик rightclick
событий, который заполнит его широтой и долготой выбранного местоположения на карте.
function initMap() {
var myOptions = {
zoom: 6,
center: new google.maps.LatLng(-33.8688, 151.2093)
},
map = new google.maps.Map(document.getElementById('map-canvas'), myOptions),
marker = new google.maps.Marker({
map: map,
}),
infowindow = new google.maps.InfoWindow;
map.addListener('rightclick', function(e) {
map.setCenter(e.latLng);
marker.setPosition(e.latLng);
infowindow.setContent("Latitude: " e.latLng.lat()
"<br>" "Longitude: " e.latLng.lng());
infowindow.open(map, marker);
});
}
html,
body {
height: 100%;
}
#map-canvas {
height: 100%;
width: 100%;
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyAIPPUQ0PSWMjTsgvIWRRcJv3LGfRzGmnAamp;callback=initMap" async defer></script>
<div id="map-canvas"></div>