如何在所有缩放级别的相同半径的谷歌地图v3中创建圆圈?

时间:2012-07-23 18:08:01

标签: google-maps google-maps-api-3 google-maps-api-2

我正在研究从v2到v3的地图代码迁移。

在v2中,我在GProjection和Overlay的帮助下创建了圆圈,它在所有缩放级别看起来都相同。

在v3中,谷歌给出了Circle类,它将在地图中创建圆形,但它会以不同的缩放级别变化。

我想创建在所有缩放级别具有相同大小的圆圈。

我想知道谷歌地图v3中的任何其他方式,我可以为所有缩放级别创建相同大小的圆圈。

提前致谢。

2 个答案:

答案 0 :(得分:35)

要在屏幕上创建相同像素大小的圆圈(相对于地理坐标中的相同区域大小),您通常会使用带有圆形自定义图标的标记。但现在你可以更灵活,并在v3中使用相对较新的符号。

var marker = new google.maps.Marker({
  position: new google.maps.LatLng(-122.5,47.5),
  icon: {
    path: google.maps.SymbolPath.CIRCLE,
    fillOpacity: 0.5,
    fillColor: '#ff0000',
    strokeOpacity: 1.0,
    strokeColor: '#fff000',
    strokeWeight: 3.0, 
    scale: 20 //pixels
  }
});

除此之外:你也可以用这些符号制作很酷的动画:http://googlegeodevelopers.blogspot.com/2012/06/powerful-data-visualization-with.html

答案 1 :(得分:8)

我使用此代码管理Google地图V3上的缩放和缩放圈:

google.maps.event.addListener(iMap.map, 'zoom_changed', function () {
    for (var i = 0; i < iMap.circle.length; i++) {
        var p = Math.pow(2, (21 - iMap.map.getZoom()));
        iMap.circle[i].setRadius(p * 1128.497220 * 0.0027);
    }

    menu.hide();
});