2

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

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

还是我应该只使用较小的图像?

提前致谢!

4

3 回答 3

3

没有outOfTheBox更改标记图标的选项。您将不得不收听缩放变化:

如何在 Google 地图中收听用户生成的缩放?

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

于 2013-03-28T15:03:53.653 回答
3

如果你想在缩放时做一些事情,你可以创建一个扩展原始 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();
    }         
}
于 2013-03-28T15:13:14.637 回答
0

我使用extendsfitBounds函数并获取位置 (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); 

}
于 2014-05-26T15:50:07.257 回答