やや狭い領域に約 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();
}
}
outOfTheBox
マーカーのアイコンを変更するオプションはありません。ズームの変更を聞く必要があります。
Googleマップでユーザーが生成したズームをリッスンするには?
古いマーカーを削除し、小さいアイコン画像で新しいマーカーをその場所に設定します。
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);
}