是否可以在Google静态地图上绘制圆圈?

时间:2010-09-22 06:07:19

标签: google-maps google-static-maps

静态地图API讨论路径,但没有提及圈子。这可能吗? 感谢

4 个答案:

答案 0 :(得分:5)

你可以做的是使用encoded polyline algorithm产生足够的点来获得一个大致圆形的路径。确实存在编码:你需要获得圆的中心和半径,将其转换为一系列纬度/长度,然后使用算法进行编码。

作为替代方案,您可以使用透明的gif图像作为标记并将其放在地图中。

答案 1 :(得分:5)

您可以通过绘图详细def unique(arr): index = 0 s = set() for i in range(len(arr)): if arr[i] not in s: arr[index] = arr[i] index += 1 s.add(arr[i]) arr[index:] = [] 来表示圆圈,因为Google静态地图不支持自己绘制圆圈。

Here is a request example包含半径为0.5和5公里的 2个圆。请记住,您需要一个算法才能生成正确的编码折线。我使用这个implementation,因为我在PHP编码,但你可以根据你想要的语言自己找到或开发类似的东西。

以下是我用来生成请求的PHP代码:

PolyLine

感谢jomacinc的教程,享受:)

答案 2 :(得分:4)

您可以使用computeOffset方法轻松地近似一个圆圈,该方法允许您沿着圆周获得坐标。

在这个例子中,我使用了8度的增量,所以这将给出45对坐标。对于我使用的圆圈尺寸,静态地图中的圆圈看起来非常圆。如果您使用大圆圈,则只需将增量更改为更小的值,例如j = j + 6.

变量pathText被添加到静态地图所需的其余网址中。

var pathText = '&path=';
var circumLatLng;

for (var j = 0; j < 361; j = j + 8) {

circumLatLng = google.maps.geometry.spherical.computeOffset(circle.getCenter(), circle.getRadius(), j);

pathText += circumLatLng.lat().toFixed(6) + ',' + circumLatLng.lng().toFixed(6) + '|';
}

答案 3 :(得分:2)

这是可能的,但你必须绘制一个有很多边的形状看起来像一个圆圈。

以下是我的例子:

<img src="http://maps.google.com/maps/api/staticmap?size=600x500&path=fillcolor:0x0000FF|weight:3|color:0xFF0000|enc:ue{cI|rrH`@qs@hBis@nDyr@rF_r@tH_q@xJyo@zLgn@vNol@rPsj@lRmh@`Taf@tUqc@dWy`@nX{]vY{ZxZuWx[kTr\_Qh]oMz]}If^iFl^uBn^?n^tBd^hFz]|Ih]nMr\~Px[jTxZtWvYzZnXz]dWx`@tUpc@`T`f@lRlh@rPrj@xNnl@xLfn@xJxo@vH~p@rF~q@lDxr@hBhs@b@ps@c@ps@iBfs@mDxr@sF~q@wH`q@yJvo@yLfn@yNpl@sPpj@mRlh@aTbf@uUnc@eWx`@oX|]wYzZyZtWy[jTs\~Pi]lM{]|Ie^jFo^rBo^?m^sBg^kF{]}Ii]mMs\_Qy[kTyZuWwY{ZoX}]eWy`@uUoc@aTcf@mRmh@sPqj@wNql@{Lgn@yJwo@uHaq@sF_r@oDyr@iBgs@a@qs@&sensor=true" border="0"/>

Or try this link to view it

为了生成这个,我使用了freemaptools.com