Есть ли встроенная опция в Google Maps API или простой способ реализовать эту функцию. Я хочу дважды щелкнуть точку на карте, и карты Google переместят мой маркер в это место.
Google Maps API - дважды щелкните точку на карте, чтобы переместить туда маркер
Ответы (2)
(Изменить: посмотрите сообщение Винкса. Он указывает, что в картах Google есть опция disableDoubleClickZoom.)
Конечно
<!DOCTYPE html>
<html>
<head>
<title>Double click on the map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 500px;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
<script>
function initialize() {
var my_position = new google.maps.LatLng(50.5, 4.5);
var map = new google.maps.Map(document.getElementById('map-canvas'), {
center: my_position,
zoom: 15
});
var marker = new google.maps.Marker({
position: my_position,
map: map
});
// double click event
google.maps.event.addListener(map, 'dblclick', function(e) {
var positionDoubleclick = e.latLng;
marker.setPosition(positionDoubleclick);
// if you don't do this, the map will zoom in
e.stopPropagation();
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
<p>Double click on the map</p>
</body>
</html>
person
Emmanuel Delay
schedule
07.11.2014
Это сработало. Но в консоли (firefox)
TypeError: e.stopPropagation is not a function
. В чем проблема?
- person Iftakharul Alam; 17.11.2015
Я не могу прокомментировать ответ Эммануэля Делэя, но чтобы исправить проблему stopPropagation, вы должны использовать параметр disableDoubleClick API Карт.
Вот обновленный результат:
<!DOCTYPE html>
<html>
<head>
<title>Double click on the map</title>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<style>
html, body, #map-canvas {
height: 500px;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
<script>
function initialize() {
var my_position = new google.maps.LatLng(50.5, 4.5);
var map = new google.maps.Map(document.getElementById('map-canvas'), {
center: my_position,
disableDoubleClickZoom: true,
zoom: 15
});
var marker = new google.maps.Marker({
position: my_position,
map: map
});
// double click event
google.maps.event.addListener(map, 'dblclick', function(e) {
var positionDoubleclick = e.latLng;
marker.setPosition(positionDoubleclick);
// if you don't do this, the map will zoom in
});
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
person
Vinks
schedule
05.02.2016
О да, это намного лучше. Спасибо; Я запомню это
- person Emmanuel Delay; 05.02.2016
Нет проблем, я просто столкнулся с проблемой, используя ваш ответ. На всякий случай, знаете ли вы аналог dblclick на долгое касание. Это было бы полезно для мобильных устройств, потому что двойное нажатие не так просто.
- person Vinks; 05.02.2016