1

マップの選択した位置にマーカーを表示し、インフォウィンドウのマーカーの位置に緯度と経度を表示するために使用しているJavaスクリプト関数があります。

マーカーは任意の場所に表示できましたが、座標を含むインフォウィンドウを表示できませんでした。

これは機能です:

function init()
{
 var mapoptions=
 {
    center: new google.maps.LatLng(17.379064211298, 78.478946685791),
    zoom: 8,
    mapTypeId: google.maps.MapTypeId.ROADMAP
 }
 map=new  google.maps.Map(document.getElementById("map_can"), mapoptions);
 var marker;
 google.maps.event.addListener(map,'click',function(event)
     {
        marker= new google.maps.Marker({position:event.latLng,map:map});
     });
 var iwindow= new google.maps.InfoWindow();
 google.maps.event.addListener(marker,'click',function(event)
    {
       iwindow.setContent(event.latLng.lat()+","+event.latLng.lng());
       iwindow.open(map,marker);
    });
}

私はどこが間違っていますか?提案をお願いします。

4

2 に答える 2

2

これは、空のマーカーオブジェクトにイベントをアタッチするためです(呼び出した時点では割り当てられていません)。

google.maps.event.addListener(marker,'click',function(event) { ... });

マーカーを作成した後、クリックイベントをマーカーに添付してみてください。例:

google.maps.event.addListener(map,'click',function(event)
 {
    marker= new google.maps.Marker({position:event.latLng,map:map});
    google.maps.event.addListener(marker,'click',function(event)
    {
        iwindow.setContent(event.latLng.lat()+","+event.latLng.lng());
        iwindow.open(map,marker);
    });
 });
于 2012-09-04T08:19:07.910 に答える
0

この切り取られたコードを試すことができます:

function addMarkerWithTimeout(position, timeout, id) {
                window.setTimeout(function () {
                    markers.push(new google.maps.Marker({
                        position: position,
                        map: map,
                        icon: image1,
                        title: "whatever!",
                        draggable: true,
                        animation: google.maps.Animation.ROUTE
                    }));

                    google.maps.event.addListener(map, 'click', function (event)
                    {
                        google.maps.event.addListener(markers[id], 'click', function (event)
                        {
                            infoWindow.setContent(event.latLng.lat() + "," + event.latLng.lng());
                            infoWindow.open(map, markers[id]);
                        });
                    });

                }, timeout);
            }
于 2016-02-10T19:59:22.767 に答える