我希望你能提供帮助。我有一个双管齐下的问题,但我对javascript和google maps API(v3)都很陌生,所以请保持温和。
我要做的是根据地址向地图添加标记,例如。地理编码,然后在那个标记的任何地方,在半径5km处围绕它画一个圆圈。我找到了一些代码来做圆圈,还有地理编码,两者都很好地协同工作。
问题是,我想让标记可拖动到新位置,一旦在新位置,删除旧圆圈,并绘制一个新圆圈。
要了解我想要实现的目标,请查看http://www.gleff.com/test/
通过上面的示例,如果您对地址进行地理编码,则会以标记位置为中心并绘制圆圈。我想将标记拖到其他位置,然后删除旧圆圈,并根据新位置绘制新圆圈。目前,它只是将标记拖动到一个新位置,但圆圈保持在原位。
我认为最好的方法是拖动标记,然后删除圆圈的叠加层,然后在新位置重新添加。
问题1.如何删除圆圈(叠加层) 问题2.如何在拖动标记
后在新位置重新添加它我尝试了很多东西,比如在数组中添加标记,例如。 var markers = []; 然后尝试使用此作为示例清除叠加层。
http://code.google.com/apis/maps/documentation/javascript/examples/overlay-remove.html
我没有成功,因为我可能没有把代码放在正确的位置。
我已经在javascript的多个部分中尝试了叠加删除代码,但似乎没有任何效果。我试图将代码添加到代码的所有位置,而不是遍历代码的所有位置,而是故意删除对它的所有引用以使其更容易理解。
那么..任何人都可以提供任何帮助吗?我只是想围绕一个标记绘制圆圈,然后能够重新定位该标记(包括圆圈)。但我想了解如何删除圆圈,因为最终,我将有多个标记,并希望从地图中永久删除单个标记(包括圆圈)。
注意:我很确定我可以解决如何删除标记本身,但圆圈不想被删除。例如,如果我对地址进行两次地理编码,则圆圈会再次绘制,使其变暗,而不是从地图中删除,然后重新绘制。
任何帮助都会很棒。
由于 杰夫
注意:我修改过的唯一代码是在main.js
中答案 0 :(得分:0)
我不熟悉API,但是当您开始拖动标记时以及放下标记时,您可以查看API中可用的事件。创建绘制和删除标记周围圆圈的事件侦听器是可行的方法。对不起,我无法帮助你解决你需要听的事件......
答案 1 :(得分:0)
这给出了一个带有圆形覆盖层的可移动标记
function init() {
var mapCenter = new google.maps.LatLng(56, -4);
var map = new google.maps.Map(document.getElementById('map'), {
'zoom': 10,
'center': mapCenter,
'mapTypeId': google.maps.MapTypeId.ROADMAP
});
// Create a draggable marker which will later on be binded to a Circle overlay.
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(56, -4),
draggable: true,
title: 'Drag me!'
});
// Add a Circle overlay to the map.
var circle = new google.maps.Circle({
map: map,
radius: 5000// 5 km
});
//Bind circle to marker
circle.bindTo('center', marker, 'position');
}
// Register an event listener to fire when the page finishes loading.
google.maps.event.addDomListener(window, 'load', init);