我正在使用谷歌地图API。允许用户移动圆圈(拖放)并保存移动的圆圈坐标。
我面临的问题是 - 每当用户移动圆圈并保存坐标,然后当我用新坐标重新加载地图时,我发现圆圈的坐标从我保存的位置移开。
每当我通过握住圆圈的中心来拖放圆圈时,就不会发生这种情况。当我使用圆心以外的点进行拖放时,它将该点视为圆心并保存相应的坐标。
当我移动它时,如何限制API来考虑圆的实际中心,而不管我用来拖放它的圆圈中的哪个点。
我正在使用以下代码:
google.maps.event.addListener(cityCircle, 'drag', function (event) {
lat = event.latLng.lat();
longi = event.latLng.lng();
var coordinatelat = event.latLng.lat()
var coordinatelng = event.latLng.lng()
var coordinatelat = lat;
var coordinatelng = longi;
});
我是否需要使用center_changed事件来获取实际的中心?
任何建议或答案都会有所帮助。
答案 0 :(得分:2)
您可以使用center_changed
获取新中心。事件参数没有任何信息,但事件处理程序的对象具有。例如:
cityCircle = new google.maps.Circle(populationOptions);
google.maps.event.addListener(cityCircle, 'center_changed', function (event) {
var newCenter = cityCircle.getCenter();
console.log('center changed: ' + newCenter.lat() + ', ' + newCenter.lng());
});
<强>更新强>
博士。鼹鼠是对的:使用dragend
事件只会触发一次而不是多次center_changed
。事件监听器的设置几乎相同:
google.maps.event.addListener(cityCircle, 'dragend', function (event) {
var newCenter = cityCircle.getCenter();
console.log('dragend / center changed: ' + newCenter.lat() + ', ' + newCenter.lng());
});
如果设置了两个事件侦听器,则输出:
...
center changed: 31.91761223410637, -107.25973130019952
center changed: 31.91761223410637, -107.25973130019952
center changed: 31.842939049148193, -107.26041549041304
center changed: 31.842939049148193, -107.26041549041304
center changed: 31.842939049148193, -107.34830611541304
center changed: 31.842939049148193, -107.34830611541304
center changed: 31.842939049148193, -107.34830611541304
center changed: 31.842939049148193, -107.34830611541304
dragend / center changed: 31.842939049148193, -107.34830611541304