在Google地图的某个点周围绘制半径
我正在使用Google Maps API并添加了标记。 现在我想在每个标记周围添加10英里的半径,这意味着在缩放时适当运行的圆圈。 我不知道如何做到这一点,看起来并不常见。
我发现了一个看起来不错的例子,你也可以看看Google Latitude。 在那里,他们使用半径标记,就像我想要的那样。
更新:谷歌纵横使用缩放的图像,这将如何工作?
使用Google Maps API V3创建一个Circle对象,然后使用bindTo()将其绑定到Marker的位置(因为它们都是google.maps.MVCObject实例)。
// Create marker
var marker = new google.maps.Marker({
map: map,
position: new google.maps.LatLng(53, -2.5),
title: 'Some location'
});
// Add circle overlay and bind to marker
var circle = new google.maps.Circle({
map: map,
radius: 16093, // 10 miles in metres
fillColor: '#AA0000'
});
circle.bindTo('center', marker, 'position');
您可以通过更改fillColor,strokeColor,strokeWeight等(完整的API)使它看起来就像Google谷歌纵横圈一样。
查看更多源代码和示例截图。
看起来实现这一点最常用的方法是绘制一个具有足够点的GPolygon来模拟一个圆。 您引用的示例使用此方法。 这个页面有一个很好的例子 - 在源代码中查找drawCircle函数。
在球形几何形状中,由这些线条之间的点,线和角度定义。 你只有那些基本的价值观才能使用。
因此,一个圆(根据投影到球体上的形状)是必须用点来近似的东西。 点越多,它看起来就像一个圆圈越多。
话虽如此,认识到谷歌地图正在将地球投影到一个平坦的表面上(认为“展开”地球,拉伸+展平直到看起来像“方形”)。 如果你有一个平坦的坐标系,你可以在其上绘制2D对象。
换句话说,您可以在Google地图上绘制缩放的矢量圆。 问题在于,谷歌地图不能直接提供给你(他们希望尽可能接近地理信息系统的价值)。 他们只给你他们希望你用来近似一个圆的GPolygon。 但是,这个人使用vml来完成IE和svg的其他浏览器(请参阅“SCALED CIRCLES”部分)。
现在,回到关于使用缩放圆形图像的谷歌纵横的问题(这可能对您最有用):如果您知道圆的半径永远不会改变(例如,它总是在某个点周围10英里),那么,最简单的解决方案是使用GGroundOverlay,它只是图像url +图像表示的GLatLngBounds。 你需要做的唯一工作就是解决代表你10英里半径的GLatLngBounds。 一旦你有了这些,谷歌地图API处理缩放您的图像随着用户放大和缩小。
链接地址: http://www.djcxy.com/p/81577.html