我正在將地圖代碼從v2遷移到v3。如何在所有縮放級別中使用相同半徑在Google地圖v3中創建圈子?
在v2中,我已經使用GProjection和Overlay創建了一個圓圈,它在所有縮放級別都會看起來相同。
在v3中,谷歌給出了Circle類,它將在地圖上創建圓,但它將在不同的縮放級別中更改。
我想要創建在所有縮放級別都具有相同大小的圓。
我想知道谷歌地圖v3中的任何其他方式,我可以創建所有縮放級別相同大小的圓。
在此先感謝。
我正在將地圖代碼從v2遷移到v3。如何在所有縮放級別中使用相同半徑在Google地圖v3中創建圈子?
在v2中,我已經使用GProjection和Overlay創建了一個圓圈,它在所有縮放級別都會看起來相同。
在v3中,谷歌給出了Circle類,它將在地圖上創建圓,但它將在不同的縮放級別中更改。
我想要創建在所有縮放級別都具有相同大小的圓。
我想知道谷歌地圖v3中的任何其他方式,我可以創建所有縮放級別相同大小的圓。
在此先感謝。
要在屏幕上創建具有相同像素大小的圓圈(與地理座標中的相同面積大小相比),傳統上使用具有圓形形狀的自定義圖標的標記。但是現在,您可以更靈活地使用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
使用這個有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
不幸的是,這些符號似乎與Retina顯示器目前不兼容:http://stackoverflow.com/questions/17352770/making-google-maps-symbols-compatible-with-high-resolution-displays – 2013-06-27 20:53:22
使用縮放功能對我不起作用,我必須使用radius,如下所示:'radius:MAX_VALUE/Math.pow(2 ,map.getZoom())' – 2013-10-03 14:23:22
我用這個代碼來管理我的谷歌地圖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();
});
我想知道你是如何得出這兩個值1128.497220和0.0027的? – 2015-07-03 10:40:21
1128.49是縮放級別爲20的谷歌地圖的比例因子。不確定0.0027。我的猜測是這是他要做的尺寸。 – Rarw 2016-03-05 18:50:17
怎麼辦你的意思是相同的尺寸?無論地圖中的縮放比例是否具有相同的半徑? – Jorge 2012-07-23 21:34:29
相同大小:表示縮放級別6中的半徑10圓形大小不同且縮放級別7半徑10圓形大小不同.map基於投影值繪製圓,因此半徑相同在每個縮放級別中都沒有不同的效果。 – Ashvin 2012-07-24 08:40:55
你的意思是一個圓形,它相對於地面來說會改變大小,但在像素方面保持相同的大小? – Marcelo 2012-07-24 13:21:21