2012-07-23 50 views
19

我正在將地圖代碼從v2遷移到v3。如何在所有縮放級別中使用相同半徑在Google地圖v3中創建圈子?

在v2中,我已經使用GProjection和Overlay創建了一個圓圈,它在所有縮放級別都會看起來相同。

在v3中,谷歌給出了Circle類,它將在地圖上創建圓,但它將在不同的縮放級別中更改。

我想要創建在所有縮放級別都具有相同大小的圓。

我想知道谷歌地圖v3中的任何其他方式,我可以創建所有縮放級別相同大小的圓。

在此先感謝。

+0

怎麼辦你的意思是相同的尺寸?無論地圖中的縮放比例是否具有相同的半徑? – Jorge 2012-07-23 21:34:29

+0

相同大小:表示縮放級別6中的半徑10圓形大小不同且縮放級別7半徑10圓形大小不同.map基於投影值繪製圓,因此半徑相同在每個縮放級別中都沒有不同的效果。 – Ashvin 2012-07-24 08:40:55

+0

你的意思是一個圓形,它相對於地面來說會改變大小,但在像素方面保持相同的大小? – Marcelo 2012-07-24 13:21:21

回答

31

要在屏幕上創建具有相同像素大小的圓圈(與地理座標中的相同面積大小相比),傳統上使用具有圓形形狀的自定義圖標的標記。但是現在,您可以更靈活地使用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

+0

使用這個有zIndex和鼠標事件處理的一些問題:http://stackoverflow.com/questions/11845916/google-maps-marker-zindex-doesnt-work-for-two-icon-types-symbol-and-string https://code.google.com/p/gmaps-api-issues/issues/detail?id=3611 – AlfaTeK 2013-05-27 08:51:58

+0

不幸的是,這些符號似乎與Retina顯示器目前不兼容:http://stackoverflow.com/questions/17352770/making-google-maps-symbols-compatible-with-high-resolution-displays – 2013-06-27 20:53:22

+0

使用縮放功能對我不起作用,我必須使用radius,如下所示:'radius:MAX_VALUE/Math.pow(2 ,map.getZoom())' – 2013-10-03 14:23:22

9

我用這個代碼來管理我的谷歌地圖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(); 
}); 
+6

我想知道你是如何得出這兩個值1128.497220和0.0027的? – 2015-07-03 10:40:21

+0

1128.49是縮放級別爲20的谷歌地圖的比例因子。不確定0.0027。我的猜測是這是他要做的尺寸。 – Rarw 2016-03-05 18:50:17