我需要在稍微小的区域内显示大约30个标记。
当用户更改缩放时,有没有办法调整Google Maps API V2标记的大小?
或者我应该使用较小的图像?
提前致谢!
答案 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);
}