【问题标题】:Google Maps JS API - extend a circleGoogle Maps JS API - 扩展一个圆圈
【发布时间】:2017-06-02 17:26:07
【问题描述】:
允许用户在地图上画一个圆圈,然后你可以添加标记 - 如果标记在圆圈之外,那么应该放大圆圈以将标记放在里面。
我在文档中找不到任何内容:
有没有可能像:UserCircle.extend(event.overlay.location);
而事件覆盖是标记。
我也尝试自己制作这个功能 - 但我卡在了半径上。
是哪个单位?如何将其转换为度数?
有什么想法吗?
【问题讨论】:
标签:
javascript
maps
geometry
geo
【解决方案1】:
这就是我现在做的......
function extendRegion(marker, drawing){
marker_lat = marker.getPosition().lat();
marker_lng = marker.getPosition().lng();
if(drawing.type == google.maps.drawing.OverlayType.CIRCLE){
var path = [marker.getPosition(), drawing.overlay.getCenter()];
var length = google.maps.geometry.spherical.computeDistanceBetween(path[0], path[1]);
if(length>drawing.overlay.getRadius()){
consloe.log('The Marker was outside the drawing, it is extended now.');
drawing.overlay.setRadius(length);
}
}
else if(drawing.type == google.maps.drawing.OverlayType.RECTANGLE){
ne_lat = drawing.overlay.getBounds().getNorthEast().lat();
ne_lng = drawing.overlay.getBounds().getNorthEast().lng();
sw_lat = drawing.overlay.getBounds().getSouthWest().lat();
sw_lng = drawing.overlay.getBounds().getSouthWest().lng();
var error=0;
if(marker_lat<sw_lat){
sw_lat = marker_lat;
error=1;
}
if(marker_lat>ne_lat){
ne_lat = marker_lat;
error=1;
}
if(marker_lng<sw_lng){
sw_lng = marker_lng;
error=1;
}
if(marker_lng>ne_lng){
ne_lng = marker_lng;
error=1;
}
if(error) {
console.log('The Marker was outside the drawing, it is extended now.');
drawing.overlay.setBounds({north: ne_lat, south: sw_lat, east: ne_lng, west: sw_lng});
}
}
}