Javascript:通过点击和拖动地图标记获取坐标
Javascript: Get Coords from both clicking and dragging map marker
我有下面的脚本,其中在单击地图时放置一个google地图标记。然后可以拖动它以进一步精确。无论哪种情况,我都想获得地图引脚的坐标。
map.addListener('click', function (e) {
placeMarkerAndPanTo(e.latLng, map);
});
function placeMarkerAndPanTo(latLng, map) {
var position = latLng;
console.log(position);
while (markersArray.length) {
markersArray.pop().setMap(null);
}
var marker = new google.maps.Marker({
draggable: true,
position: latLng,
map: map,
title: "Select Your Location!"
});
map.panTo(latLng);
markersArray.push(marker);
map.addListener(marker, 'dragend', function (event) {
var position = event.latLng;
console.log(position);
});
}
我得到点击和弦很好,但我有麻烦放置我的'dragend'
侦听器,以便它拾取动作。如果它被放置在placeMarkerAndPanTo
函数中,那么在函数结束后它并不真正"监听"。然而,如果我把它放在函数之外,那么它不知道什么是marker
!
你的代码中有一个错别字:
markersArray.push(marker);
map.addListener(marker, 'dragend', function (event) {
var position = event.latLng;
console.log(position);
});
应:markersArray.push(marker);
google.maps.event.addListener(marker, 'dragend', function (event) {
var position = event.latLng;
console.log(position);
});
概念验证
代码片段:
var geocoder;
var map;
var markersArray = [];
function placeMarkerAndPanTo(latLng, map) {
var position = latLng;
console.log(position);
while (markersArray.length) {
markersArray.pop().setMap(null);
}
var marker = new google.maps.Marker({
draggable: true,
position: latLng,
map: map,
title: "Select Your Location!"
});
map.panTo(latLng);
markersArray.push(marker);
google.maps.event.addListener(marker, 'dragend', function(event) {
var position = event.latLng;
console.log(position);
});
}
function initialize() {
var map = new google.maps.Map(
document.getElementById("map_canvas"), {
center: new google.maps.LatLng(37.4419, -122.1419),
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
map.addListener('click', function(e) {
placeMarkerAndPanTo(e.latLng, map);
});
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="map_canvas" style="border: 2px solid #3872ac;"></div>
您可以尝试将var marker
移出函数并使用
marker = new google.maps.Marker({
draggable: true,
position: latLng,
map: map,
title: "Select Your Location!"
});
相关文章:
- 如何更改角度谷歌地图上的集群图标
- 谷歌地图API-显示具有不同图标的标记
- 谷歌地图-更改图层图标大小
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- 将图标作为参数传递不会;t工作-谷歌地图
- 谷歌地图隐藏手图标
- 从谷歌地图信息窗口中删除关闭图标
- 在javascript中设置谷歌地图标记图标属性
- 我是否可以在单击特定图标时更改地图标记图标,然后在单击另一个图标时切换,等等
- 我如何才能在某些条件下更改c#中谷歌地图标记的图标
- 使用HTML元素代替gmap3的地图标记图标
- 谷歌地图标记图标作为变量
- 我如何使谷歌地图不更改标记的自定义图标大小
- 饼图而不是谷歌地图中的标记集群图标
- 如何在谷歌地图上放置图标标记,图标数量是否有配额
- 可拖动图标未显示在 Google 地图顶部且不重复
- 谷歌地图v3更改标记图标在安卓网络视图
- AngularJS谷歌地图(ng-map)图标网址不起作用
- 带有群集和过滤器复选框的地图框个性化图标
- 添加 removeMarker 函数时,每 5 秒在地图上加载一次图钉不会显示图标