0

因此,右键单击会创建标记,但是当我单击标记时,不会显示信息窗口。注释的警报会给出坐标。我可能做错了什么。逻辑或语法是否有问题。我找不到解决这个问题的方法。这是我的代码:

   // create marker on right click
            google.maps.event.addListener(map,'rightclick', function(e) {

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

                alert('coord: ' + marker.getPosition().toUrlValue(3));

            });

            // display info window on marker click
            google.maps.event.addListener(marker,'click', function(event){

                infowindow =  new google.maps.InfoWindow({
                map:map, 
                content:"coordinates:"+event.latLng.toUrlValue(),
                position:event.latLng
                });

                infowindow.open(map,marker);
            });
4

2 回答 2

1

您应该将第二个事件放在与第一个事件相同的上下文中:

google.maps.event.addListener(map,'rightclick', function(e) {
    var marker = new google.maps.Marker({
        position: e.latLng,
        map: map
    });

    google.maps.event.addListener(marker,'click', function(event){
        infowindow =  new google.maps.InfoWindow({
            map: map, 
            content: "coordinates:"+event.latLng.toUrlValue(),
            position: event.latLng
        });

        infowindow.open(map, marker);
    });
});

希望这可以帮助。

于 2012-09-27T12:35:17.010 回答
0

您没有通过调用 infowindow 对象的 open() 打开 infowindow。每次单击标记时都会进行初始化。

更新

infowindow =  new google.maps.InfoWindow({
     map:map, 
     content:"coordinates:"+event.latLng.toUrlValue()
});

// display info window on marker click
google.maps.event.addListener(marker, 'click', function(event) {
   infowindow.setPosition(event.latLng);
   infowindow.open(marker);
});

试试这个代码

https://developers.google.com/maps/documentation/javascript/overlays#InfoWindows

于 2012-09-27T11:42:25.613 回答