在谷歌地图上绘制一个点的半径

我正在使用谷歌地图API,并且已经添加了标记。现在我想在每个标记周围添加一个10英里的半径,也就是一个在缩放时表现适当的圆。我不知道如何做到这一点,而且这似乎并不常见。

我找到了一个看起来不错的例子,你也可以看一下谷歌纬度。在那里,他们使用有半径的标记,就像我想要的那样。

更新: Google Latitude使用的是图像,是按比例缩放的,这怎么能行?

似乎实现这一目标的最常见的方法是用足够多的点画一个GPolygon来模拟一个圆。 你参考的例子就使用了这种方法。 本页有一个很好的例子--在源代码中寻找函数drawCircle

评论(1)

在球面几何中,形状是由点、线和这些线之间的角度定义的。你只有这些基本的数值可以使用。

因此,圆(就投影到球体上的形状而言)必须用点来近似。点越多,它就越像一个圆。

说到这里,请注意谷歌地图是将地球投射到一个平面上(想想看,将地球展开,然后拉伸+压扁,直到它看起来像方形)。如果你有一个平面坐标系,你就可以在上面画出你想要的二维物体。

换句话说,你可以在谷歌地图上画一个缩放的矢量圆。问题是,google地图没有给你开箱即用的功能(他们希望尽可能地接近GIS值)。他们只给你GPolygon,他们希望你用它来接近一个圆。然而,这个人做到了,在IE上使用vml,在其他浏览器上使用svg(见"缩放的圆"部分)。

现在,回到你的问题,关于谷歌纬度使用一个缩放的圆圈图像(这可能对你最有用):如果你知道你的圆圈半径永远不会改变(例如它总是在某个点周围10英里),那么最简单的解决方案是使用一个GGroundOverlay,这只是一个图像的网址+图像代表的GLatLngBounds。那么你需要做的唯一工作就是将代表你的10英里半径的GLatLngBounds连接起来。一旦你有了这个,谷歌地图api就会在用户放大和缩小时处理你的图像的缩放。

评论(1)

我过去也遇到过这个问题,所以我把这个讨论收藏起来。

总结一下,你可以

1.看看这个圆形过滤器'的源代码,想办法把它纳入你的项目。 2.画一个有足够点数的GPolygon来模拟一个圆。 3.通过修改http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=-105.1024生成一个KML文件,然后将其导入。 在谷歌地图中,你可以直接把URI粘贴到搜索框中,它就会显示在地图上。 但我不确定你如何使用API进行操作。

评论(0)