我正在寻找一种在谷歌地图 api v3 中绘制倒置几何(非地理)圆的方法。
本质上,目标是使地图变暗,除了地图对象周围 - 作为使地图对象脱颖而出的一种方式。为此,我采用了倒置叠加,并有一种方法可以在我的“阴影叠加”中创建圆形“洞”。
但是,我用来获取 lat/lng 坐标以生成此圆的方法已调整为墨卡托投影,并且大小或形状不一致,因为它与赤道的位置有关。该方法需要创建一个圆(不使用谷歌的圆对象 - 或使用它来提取它的路径),该圆将根据不采用墨卡托投影的半径场从中心计算纬度/经度点考虑到 - 这样它就会在地图上绘制的任何地方显示一个完美的圆圈。
这应该不难,但我正在努力将此函数转换为不将墨卡托投影应用于结果:
function getCircleCoords(point, radius) {
var d2r = Math.PI / 180; // degrees to radians
var points = 90;
var circleLatLngs = new Array();
var circleLat = radius * 0.621371192 * 0.014483;
var circleLng = circleLat / Math.cos( point.lat() * d2r);
for (var i = 0; i < points+1; i++) {
var theta = Math.PI * (i / (points / 2));
var vertexLat = point.lat() + (circleLat * Math.sin(theta));
var vertexLng = point.lng() + (circleLng * Math.cos(theta));
var vertexLat = point.lat() + (circleLat * (theta));
var vertexLng = point.lng() + (circleLng * (theta));
var vertextLatLng = new google.maps.LatLng(vertexLat, vertexLng);
circleLatLngs.push( vertextLatLng );
}
return circleLatLngs;
}
这将被称为:
feature = new google.maps.Polygon({
paths: [[my_shadow_layer_path],[getCircleCoords(latLng_, 800)] ],
fillColor: '#ff0000',
fillOpacity: 0.5,
map: map_
});
}
想法?