Javascript 让谷歌地图api v3成为可拖动部分

Javascript 让谷歌地图api v3成为可拖动部分,javascript,html,google-maps,canvas,google-maps-api-3,Javascript,Html,Google Maps,Canvas,Google Maps Api 3,有没有可能在谷歌地图上画一个圆圈,然后只定位内部部分/拖动整个地图 我尝试了其他方法,但没有成功。下面是一个快速的photoshop示例,说明了我正在努力实现的目标 一个选项,用于在地图的中心放置一个“洞”,基于对 通过将孔的中心绑定到地图中心(而不是在center\u changedevent listener中执行),可能可以使它稍微不那么紧张 var citymap={}; 城市地图[纽约]={ 中心:新google.maps.LatLng(40.714352,-74.005973),

有没有可能在谷歌地图上画一个圆圈,然后只定位内部部分/拖动整个地图

我尝试了其他方法,但没有成功。下面是一个快速的photoshop示例,说明了我正在努力实现的目标

一个选项,用于在地图的中心放置一个“洞”,基于对

通过将孔的中心绑定到地图中心(而不是在
center\u changed
event listener中执行),可能可以使它稍微不那么紧张

var citymap={};
城市地图[纽约]={
中心:新google.maps.LatLng(40.714352,-74.005973),
人口:8143197
};
var城市圈;
var bounds=new google.maps.LatLngBounds();
var outerbounds=[
新google.maps.LatLng(85180),
新google.maps.LatLng(85,90),
新google.maps.LatLng(85,0),
新的google.maps.LatLng(85,-90),
新google.maps.LatLng(85,-180),
新的google.maps.LatLng(0,-180),
新的google.maps.LatLng(-85,-180),
新的google.maps.LatLng(-85,-90),
新的google.maps.LatLng(-85,0),
新的google.maps.LatLng(-85,90),
新的google.maps.LatLng(-85180),
新的google.maps.LatLng(0180),
新google.maps.LatLng(85180)
];
函数drawCircle(点、半径、方向){
var d2r=Math.PI/180;//度到弧度
var r2d=180/Math.PI;//弧度到度
var earthsradius=3963;//3963是地球的半径,以英里为单位
var点=64;
//在lat/lon找到袭击者
var rlat=(半径/地球半径)*r2d;
var rlng=rlat/Math.cos(point.lat()*d2r);
var extp=新数组();
if(dir==1){
var start=0;
var end=点数+1
}//这里有一个额外的确保我们连接两端
否则{
var起点=点数+1;
var end=0
}
对于(var i=启动;
(dir==1?iend);i=i+dir){
varθ=数学PI*(i/(点/2));
ey=点.lng()+(rlng*Math.cos(θ));//中心a+半径x*cos(θ)
ex=point.lat()+(rlat*Math.sin(θ));//中心b+半径y*sin(θ)
extp.push(新的google.maps.LatLng(ex,ey));
extend(extp[extp.length-1]);
}
返回extp;
}
var映射;
函数初始化(){
//创建地图。
变量映射选项={
缩放:4,
中心:新google.maps.LatLng(37.09024,-95.712891),
mapTypeId:google.maps.mapTypeId.TERRAIN
};
map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
变量填充选项={
strokeColor:“#000000”,
笔划不透明度:0.8,
冲程重量:0,
fillColor:“#000000”,
不透明度:0.35,
地图:地图,
路径:[外部边界,绘图圈(城市地图['newyork'].中心,10,-1)]
};
//将该城市的圆圈添加到地图中。
cityCircle=newgoogle.maps.Polygon(填充选项);
映射边界(bounds);
google.maps.event.addListener(映射,'center_changed',重绘多边形);
}
函数redrawPoly(){
//更新圆。
设置路径([outerbounds,drawCircle(map.getCenter(),10,-1)];
}
google.maps.event.addDomListener(窗口“加载”,初始化)
html,
身体,
#地图画布{
身高:100%;
边际:0px;
填充:0px
}


是否希望圆孔保持固定在中心位置?还是固定在地图上?你试过什么?事实上,较暗的部分应该是一层。在视觉上,这很容易通过在“洞”透明的地方放置png来实现,但随后拖动贴图的功能消失了(然后单击并拖动图像层,而不是贴图)。我尝试过用canvas、svg和数据URI制作掩码,但都没有成功。谢谢为什么圆圈周围有角?它看起来更像一个多边形,它不是光滑的,因为它不是一个圆,它是一个具有可配置边数的多边形。如果你想要更多的边,改变数字(但要注意,更多的边就是更多的处理过程)。效果就像一个符咒!谢谢只是一些我无法理解的参数。我想将地图放大一点,放大地图选项不再工作。知道如何设置地图图层的缩放吗?“通过将洞的中心绑定到地图中心,可能可以使它稍微不那么紧张。”你能进一步解释一下吗?我没有太多的地图知识。再次感谢!要使用mapOptions设置地图中心和缩放,请在代码中删除对map.fitBounds的调用。见我对以下问题的答复: