2

私はグーグルマップとその上にマーカーを持っています。

マーカーを 10x10 ピクセルなどの固定サイズにする必要があり、ズームインまたはズームアウトしても同じサイズで再送信されます。

これは私が今持っているものです(そして機能していません):

var marker = new google.maps.Marker({
    position: circleCenter,
    map: googleMap,
    icon: {
        path: google.maps.SymbolPath.CIRCLE,
        fillOpacity: 0.5,
        fillColor: 'ff0000',
        strokeWeight: 10,
        size: 5
    }
});

マップのズームが変更されたときに、そのサイズのスケーリングのマーカーをブロックすることは可能ですか?

4

1 に答える 1

1

Google には、マーカーのスケーリングを停止するすぐに使用できる方法はありません。

グラウンド オーバーレイを使用して、マップ上に固定領域を設定し、画像を添付できます。グラウンド オーバーレイのトリックは、境界オブジェクトの座標を知る必要があり、おそらく境界を計算する方法を考え出す必要があるということです。この例では、中心点を長方形に拡張します。

このメソッドはマーカー オブジェクト (ドラッグ、アニメーションなど) を使用しないため、他のマーカー機能も失われますが、オーバーレイにはクリック イベントがあります。

概念実証は次のとおりです。http://jsfiddle.net/bryan_weaver/4rxqQ/

関連コード:

function initialize() {
    var map;
    var centerPosition = new google.maps.LatLng(38.713107, -90.42984);
    var options = {
        zoom: 9,
        center: centerPosition,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map($('#map')[0], options);

    var icon = 'https://www.google.com/mapfiles/marker_black.png';
    var iconBounds = constructBounds(38.713107, -90.42984);
    var staticOverlay = new google.maps.GroundOverlay(icon, iconBounds);
    staticOverlay.setMap(map);
}

function constructBounds(lat, lng){
    var sw = new google.maps.LatLng(lat - .03, lng - .025)
    var ne = new google.maps.LatLng(lat + .03, lng + .025) 
    return new google.maps.LatLngBounds(sw, ne);
}
于 2013-03-27T20:42:05.317 に答える