在函数调用中重新绘制谷歌地图圆圈和标记
Redraw Google Maps Circle and Marker on function call
我正在编写一个web应用程序,它在谷歌地图上显示一个圆圈围绕一个标记。placeMarker(location, radius)
在location
处设置一个Marker,并将一个半径为的Circle绑定到该Marker。我希望每次调用placeMarker时脚本都重新绘制Circle和Marker。当我在控制台中尝试它时,它会用新位置重新绘制标记,但保留原始圆半径。还打印CCD_ 3。我需要更改什么才能使其工作?
var map;
var marker;
function placeMarker(location, radius) {
if (typeof radius === 'undefined') { radius = initialRadius; }
if (marker) {
marker.setPosition(location);
} else {
marker = new google.maps.Marker({
position: location,
map: map,
draggable: true
});
}
var circle = new google.maps.Circle({
map: map,
radius: radius,
fillColor: '#AA0000',
});
circle.bindTo('center', marker, 'position');
}
function initialize() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 0, lng: 0},
zoom: 1
});
google.maps.event.addListener(map, 'click', function (event) {
placeMarker(event.latLng);
});
google.maps.event.addDomListener(window, "resize", function () {
var center = map.getCenter();
google.maps.event.trigger(map, "resize");
map.setCenter(center);
});
}
您需要执行与标记类似的操作。也就是说,而不是创建一个新的circle
对象并将其绑定到映射。您需要使用circle.setCenter(latlng)
api重新定位现有圆。
请参阅:
https://developers.google.com/maps/documentation/javascript/reference#Circle
不幸的是,你这里没有JSFiddle设置,否则我可以尝试在那里为你修复它。但是,您的代码应该是这样的。
var map;
var marker;
var myCircle;
function placeMarker(location, radius) {
if (typeof radius === 'undefined') { radius = initialRadius; }
if (marker) {
marker.setPosition(location);
} else {
marker = new google.maps.Marker({
position: location,
map: map,
draggable: true
});
}
if (myCircle) {
// Don't create new circle, update circle position instead.
myCircle.setCenter(location); // where location=latLng
}
else {
// First time loading, create the circle
myCircle = new google.maps.Circle({
map: map,
radius: radius,
fillColor: '#AA0000',
});
myCircle.bindTo('center', marker, 'position');
}
}
function initialize() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 0, lng: 0},
zoom: 1
});
google.maps.event.addListener(map, 'click', function (event) {
placeMarker(event.latLng);
});
google.maps.event.addDomListener(window, "resize", function () {
var center = map.getCenter();
google.maps.event.trigger(map, "resize");
map.setCenter(center);
});
}
相关文章:
- 在谷歌地图上绘制位置数据库
- 使用复选框绘制多段线谷歌地图API3,不'不起作用
- 谷歌地图API在Javascript中,绘制圆的半径
- 使用Raphael js直接在谷歌地图上绘制
- 谷歌地图/GMAP3 - 绘制从用户地理位置到已知目的地的路线 - 需要帮助
- 如何使用谷歌地图绘制已知路线 JavsScript API V3.
- 使用谷歌地图绘制半径内的点
- 谷歌地图绘制多边形并警告重叠
- 将多个谷歌地图绘制到页面
- 谷歌地图绘制 - 通过拖动绘制线条或多边形
- 谷歌地图绘制路线在Windows中出现故障
- 谷歌地图绘制多边形并缩放到其边界
- 谷歌地图绘制工具输出多边形坐标
- 由谷歌地图绘制的矩形 绘图管理器不会触发鼠标移动事件
- 谷歌地图绘制了圆形半径搜索
- 用谷歌地图绘制公交路线
- 如何显示谷歌地图绘制工具时,按下按钮菜单
- 谷歌地图绘制多边形线使用数据库的详细信息
- 如何有实时响应从KML文件在谷歌地图绘制多边形
- 如何使用谷歌地图绘制多个折线