2017-02-03 17 views
-2

我創建了一個新的地圖縮放等於4:行程似乎越來越大,每次圓圈圖標規模減少

map = new google.maps.Map(document.getElementById('map'), { 
    zoom: 4, 
    center: new google.maps.LatLng(39.9526, -98.5795), 
    mapType: 'terrain' 
    }); 

我聽的ZOOM_CHANGED事件,這樣我可以重繪我的標誌一個新的規模:

google.maps.event.addListener(map, 'zoom_changed', function() { 
    var zoom = map.getZoom(); 
    $log.debug("zoom: " + zoom); 

,我在這裏創建我的新圖標:

var greenMarkerIcon = { 
    path: google.maps.SymbolPath.CIRCLE, 
    fillOpacity: 1, 
    fillColor: "green", 
     strokeWeight: 1, 
    scale: map.getZoom() 
    } 

當我放大,一切都看起來很可愛。隨着我深入研究,圖標的規模也越來越大。縮小是問題的所在:

Click here for image of icon after reducing scale

圓的邊界變得越來越大。我已經爲icon.strokeWeight屬性添加了一條調試語句,並且它始終保持爲1。我將所有舊的標記吹走並重新繪製它們,所以我不知道爲什麼單個標記strokeWeight顯得更大。

任何想法?

+0

請提供一個[mcve]來演示您的問題。 – geocodezip

+0

我在你的問題中看不到任何代碼會改變圖標的​​大小(或影響筆畫)。你確定你正在改變圖標,而不是用一個新圖標覆蓋它(如果新圖標較大,你將無法看到較小的圖標)。 – geocodezip

回答

1

我假設你想更改地圖縮放上的標記圖標比例,並且標記應該更小/更大而不更改筆畫。那麼你只需要改變圖標的​​規模,並將其設置標記:

google.maps.event.addListener(map, 'zoom_changed', function() { 
    var zoom = map.getZoom(); 
    console.log("zoom: " + zoom); 
    greenMarkerIcon.scale = (zoom + 1) * scale; // +1 is for avoiding zoom=0, scale is initial scale of icon 
    marker.setIcon(greenMarkerIcon); 
}); 

檢查這個例子:http://jsfiddle.net/dUMFW/108/

0

提供的答案是正確的。

我發現我做錯了什麼。每次用戶單擊縮放按鈕時,我都會創建一個新標記。標記只能創建一次,相關的圖標應在縮放時更改。

謝謝。