我需要在一个很小的区域内显示大约 30 个标记。
当用户更改缩放比例时,有没有办法调整 Google Maps API V2 标记的大小?
还是我应该只使用较小的图像?
提前致谢!
我需要在一个很小的区域内显示大约 30 个标记。
当用户更改缩放比例时,有没有办法调整 Google Maps API V2 标记的大小?
还是我应该只使用较小的图像?
提前致谢!
如果你想在缩放时做一些事情,你可以创建一个扩展原始 MapView 的自定义 Mapview,并覆盖 dispatchDraw(Canvas canvas)。
通过添加一个小监听器,您可以在回调中做任何您想做的事情。像这样的东西;
    @Override
protected void dispatchDraw(final Canvas canvas) {
    super.dispatchDraw(canvas);
    if (getZoomLevel() != lastZoomLevel) {
        if (listener != null) {
            listener.onZoom(lastZoomLevel, getZoomLevel());
        }
        lastZoomLevel = getZoomLevel();
    }         
}
我使用extends和fitBounds函数并获取位置 (LatLng) 来设置缩放以映射项目
//JSP
<c:forEach var="lastPosition" items="${lastPositionResultDto}" >        
    <input type="hidden" id="mapPointsPosition_${lastPosition.id}" value="${lastPosition.latitude}_${lastPosition.longitude}" >
</c:forEach>
//JAVASCRIPT
map = new google.maps.Map(document.getElementById('map-canvas-position'), mapOptions);    
var arrPointMaps = $("[id^=mapPointsPosition_]");
var limits = new google.maps.LatLngBounds(0,0);
for(var j=0; j<arrPointMaps.length;  j++){
    var stringPointMap = arrPointMaps[j].getAttribute("value").split("_");
    var latAlertPoint = stringPointMap[0];
    var lonAlertPoint = stringPointMap[1];                
    var limitPosition = new google.maps.LatLng(parseFloat(latAlertPoint), parseFloat(lonAlertPoint));
    limits.extend(limitPosition);
}   
map.fitBounds(limits); 
}