【问题标题】:Drawing anonymous circles in Google Maps在 Google 地图中绘制匿名圈子
【发布时间】:2011-03-28 13:59:11
【问题描述】:

我正在尝试绘制具有多个圆形叠加层的谷歌地图,但我不想显示正确的半径中心。

例如,myLatlng 是我的纬度/经度半径中心,我想画一个不围绕它的圆,而是一个将包含该点的圆。

这是我目前绘制圆圈的方式:

        var myLatlng = new google.maps.LatLng(33.33333,22.22222);
        var circle = new google.maps.Circle({
              map: map,
              radius: 3218,
              strokeColor: "#FFAA00",
              fillColor: "#00AAFF",
              fillOpacity: 0.3,
              center: myLatlng,
              zIndex: 99999,

        });

33.33333,22.22222 是一个我不想透露的“秘密”位置,但我希望在圆圈内显示该点。

这可能吗?

谢谢!

【问题讨论】:

  • 你能在纬度/经度上添加一些随机的小值吗?
  • @Jeff Foster - 你能详细说明一下吗?没看懂。。
  • 他的意思是在纬度/经度位置添加一个随机十进制值,该值小于圆的半径,以使其位置偏离真实。
  • @D.N, @Jeff Foster - “随机”十进制值是什么意思?该十进制值需要在半径范围内,我该如何确定?我错过了你的意思吗?
  • 如果您将圆心移动到其他任意位置,但真实圆心与新圆心之间的距离小于您正在绘制的圆的半径(或最内半径如果画一个更粗的圆圈),那么它自然会包含你的真实点。

标签: javascript google-maps google-maps-api-3 geospatial spatial


【解决方案1】:

在您的示例代码中。圆可以移动到任何位置,这样 33.3 和 22.2 仍然可以包括在内。

一种方法是简单地添加一个随机偏移量。

    // Generate random between -5 and 5 (just an example)
    var latOffset = Math.floor(Math.random()*11) - 5;
    var longOffset = Math.floor(Math.random()*11) - 5;
    var myLatlng = new google.maps.LatLng(33.33333 + latOffset,22.22222 + longOffset);

您遇到的棘手问题是确保随机偏移不会将圆移出边界。维基百科上的Expressing latitude and longitude as linear units 部分应该会有所帮助。

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 1970-01-01
    • 2013-08-16
    • 2013-03-30
    • 2013-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多