Android Google地图会在缩放时调整标记大小

时间:2013-03-28 15:00:09

标签: android google-maps-markers

我需要在稍微小的区域内显示大约30个标记。

当用户更改缩放时,有没有办法调整Google Maps API V2标记的大小?

或者我应该使用较小的图像?

提前致谢!

3 个答案:

答案 0 :(得分:3)

如果你想在缩放时做一些事情,你可以创建一个扩展原始MapView的自定义Mapview,然后覆盖dispatchDraw(Canvas画布)。

通过添加一点监听器,您可以在回调中执行任何操作。 像这样的东西;

    @Override
protected void dispatchDraw(final Canvas canvas) {
    super.dispatchDraw(canvas);
    if (getZoomLevel() != lastZoomLevel) {
        if (listener != null) {
            listener.onZoom(lastZoomLevel, getZoomLevel());
        }
        lastZoomLevel = getZoomLevel();
    }         
}

答案 1 :(得分:2)

没有outOfTheBox选项可以更改标记的图标。 你必须听缩放变化:

How to listen for user generated zoom in Google Maps?

并删除较旧的标记,并使用较小的图标图像在其位置设置新标记。

答案 2 :(得分:0)

我使用 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); 

}