2

やや狭い領域に約 30 個のマーカーを表示する必要があります。

ユーザーがズームを変更したときに Google Maps API V2 マーカーのサイズを変更する方法はありますか?

それとも、小さい画像を使用する必要がありますか?

前もって感謝します!

4

3 に答える 3

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 に答える
3

outOfTheBoxマーカーのアイコンを変更するオプションはありません。ズームの変更を聞く必要があります。

Googleマップでユーザーが生成したズームをリッスンするには?

古いマーカーを削除し、小さいアイコン画像で新しいマーカーをその場所に設定します。

于 2013-03-28T15:03:53.653 に答える
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); 

}
于 2014-05-26T15:50:07.257 に答える