2013-03-27 98 views
1

我有一個谷歌地圖,並在上面有一個標記。谷歌地圖V3:防止標記縮放

我需要的標記是固定的大小,例如,10x10像素,即使我放大或縮小重新郵寄。

這就是我現在所擁有的(而不是workig):

var marker = new google.maps.Marker({ 
    position: circleCenter, 
    map: googleMap, 
    icon: { 
     path: google.maps.SymbolPath.CIRCLE, 
     fillOpacity: 0.5, 
     fillColor: 'ff0000', 
     strokeWeight: 10, 
     size: 5 
    } 
}); 

這可能阻止縮放它的大小的標記時,地圖縮放改變?

+0

這是否回答幫助? http://stackoverflow.com/a/13385598/875127 – 2013-03-27 18:59:37

+0

謝謝你的鏈接。 Pff ...我希望有一個開箱即用的解決方案,就像一個簡單的財產。我會讓瀏覽器非常慢,如果我添加這個回調,並且如果我在地圖上有大約30個標記:( – Catalin 2013-03-27 19:10:00

+0

是的,我不知道一個更簡單的方法,但會很好,但我不認爲30個標記會太可怕了...... – 2013-03-27 19:11:33

回答

0

Google沒有開箱即用的方法來停止標記縮放。

您可以使用Ground Overlay在地圖上設置固定區域,然後附加圖像。帶地面疊加層的技巧是你必須知道邊界對象的座標,你可能不得不想出一些計算邊界的方法。在這個例子中,我只是將一箇中心點展開成一個矩形。

由於此方法不使用標記對象(例如拖動,動畫等),但疊加層確實有點擊事件,所以您也會放棄其他標記功能。

這裏是一個概念證明:http://jsfiddle.net/bryan_weaver/4rxqQ/

相關代碼:

function initialize() { 
    var map; 
    var centerPosition = new google.maps.LatLng(38.713107, -90.42984); 
    var options = { 
     zoom: 9, 
     center: centerPosition, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map($('#map')[0], options); 

    var icon = 'https://www.google.com/mapfiles/marker_black.png'; 
    var iconBounds = constructBounds(38.713107, -90.42984); 
    var staticOverlay = new google.maps.GroundOverlay(icon, iconBounds); 
    staticOverlay.setMap(map); 
} 

function constructBounds(lat, lng){ 
    var sw = new google.maps.LatLng(lat - .03, lng - .025) 
    var ne = new google.maps.LatLng(lat + .03, lng + .025) 
    return new google.maps.LatLngBounds(sw, ne); 
} 
+0

「谷歌沒有開箱即用的方法來阻止標記擴展。」這很有趣,因爲我現在正在努力打開縮放比例標記我的製作者在放大/縮小時不會改變大小。 – rzymek 2014-12-09 16:43:16