谷歌地图圈圈错位

时间:2014-01-27 06:17:26

标签: javascript google-maps google-maps-api-3 google-maps-markers

我正在使用谷歌地图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事件来获取实际的中心?

任何建议或答案都会有所帮助。

1 个答案:

答案 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