0

KMboxオーバーレイを使用してカスタム オーバーレイを適用し、ユーザーの一般的な関心ポイントがあると思われる場所を示すマップがあります。私が望むのは、このマップをユーザーに表示し、ユーザーがマップをクリックして、POI の正確な位置一致を取得できるようにすることです。

ユーザーがマップをクリックしてマップのズームを変更する場合を除いて、これはすべて正常に機能します。

マーカーをマップに追加するコードは次のとおりです。

 function addMarker(location) {

        if(KmOverlay)
        {
            KmOverlay.remove();
        }
        if(last_marker)
        {
            last_marker.setMap(null);
        }

        marker = new google.maps.Marker({
            position: location,
            map: map
        });

        // Keep track for future unsetting...
       last_marker = marker;     
    }

そして、地図を表示するために、私はこの機能を持っています。

function show_map(lt, ln, zoom, controls, marker) 
{
    var ltln = new google.maps.LatLng(lt, ln);
    var vars = {
        zoom: zoom,
        center: ltln,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        navigationControl: controls,
        navigationControlOptions: {style: google.maps.NavigationControlStyle.ZOOM_PAN} ,
        mapTypeControl: false,
        scaleControl: false,
        scrollwheel: false
    };

    map = new google.maps.Map(document.getElementById("map_canvas"), vars);

    KmOverlay = new KmBox(map, new google.maps.LatLng(lat, lon), KmOpts);
    var totalBounds = new google.maps.LatLngBounds();
    totalBounds.union(KmOverlay.getBounds());


    google.maps.event.addListener(map, 'click', function(event) {
        addMarker(event.latLng);
    });

}

ここの次のリンクに実際の例があります

4

1 に答える 1

0

KmOverlay で setMap() メソッドを使用し、null をパラメーターとして渡すことで、これを修正しました。

例えば:

function addMarker(location) {

    if(KmOverlay)
    {
        KmOverlay.setMap(null);
    }
于 2010-05-31T10:19:33.230 に答える