我需要在一个很小的区域内显示大约 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);
}