2013-02-26 21 views
0

我有一個谷歌地圖用圓圈被顯示,使用按比例縮小使用數據集的索引的半徑(1,2,3,4 ..):谷歌地圖,刻度圈基於變焦

var radiusTest = 1 - (mapDataTrending[i].index) * .1; 

var populationOptions = { 
    strokeColor: "#fdb913", 
    strokeOpacity: 0.35, 
    strokeWeight: 1, 
    fillColor: "#fdb913", 
    fillOpacity: 0.35, 
    map: map, 
    center: new google.maps.LatLng(mapDataTrending[i].lat, mapDataTrending[i].lng), 
    radius: radiusTest * 800 
}; 

cityCircle = new google.maps.Circle(populationOptions); 

我想如果用戶放大時圓圈不會變大。當用戶放大時,圓圈會縮放,如果用戶放大到20像素的整數,我希望它們不會變大。

這裏是我想提出我的地圖:

var mapOptions = { 
    center: new google.maps.LatLng(30.26826, -97.743044), 
    zoom: 14, 
    panControl: false, 
    zoomControl: false, 
    scaleControl: false, 
    disableDefaultUI: true, 
    mapTypeControlOptions: { 
     mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style'] 
    } 
}; 

map = new google.maps.Map(document.getElementById('map_canvas'), mapOptions); 

有沒有一種方法可以根據地圖縮放控制圓半徑?

回答

3

谷歌地圖有一個zoom_changed event,你可以訂閱並在Circle上調用setRadius方法。當然,你必須自己定義取決於功能getCustomRadiusForZoom圓圈應該多大

google.maps.event.addListener(map, 'zoom_changed', function() { 
    var zoomLevel = map.getZoom(); 
    cityCircle.setRadius(getCustomRadiusForZoom(zoomLevel)); 
    }); 
1

如果希望保持相同的大小在不同的縮放級別的圓,它可能是最好的去與symbols

example所示,默認情況下,它們使用縮放級別縮放它們的大小。您還可以選擇設置properties正常圓圈有fillColorstrokeOpacity

從例如我聯繫:

var marker = new google.maps.Marker({ 
    position: map.getCenter(), 
    icon: { 
    path: google.maps.SymbolPath.CIRCLE, 
    scale: 10 
    }, 
    draggable: true, 
    map: map 
}); 

enter image description here

enter image description here