谷歌地图拖动标记问题

时间:2012-08-09 19:51:15

标签: javascript jquery events google-maps marker

我想在用户拖动标记时提醒用户地图上的新位置。显然,当我拖动我的标记时,听众甚至不会触发。我希望我的用户能够选择将标记放在地图上并且还能够拖动它。单击并拖动地图的另一侧可以更改标记位置,但是当我尝试添加用于拖动地图的侦听器时,为了弹出菜单警报,它不起作用。感谢

var LatLng = new google.maps.LatLng(lat,lng);
        var marker;
        var mapOptions = {
          center: LatLng,
          zoom: 16,
          minZoom:12,
          maxZoom:18,
          panControl:false,
          scrollwheel: false,
          rotateControl:false,
          streetViewControl:false,
          keyboardShortcuts:false,
          mapTypeControl: false,
          scaleControl: false,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };


        var Gmap = new google.maps.Map($('#map_canvas').get(0),mapOptions);


        // adding pointer by clicking on mac
        google.maps.event.addListener(Gmap, 'click', function(e) {
            if (marker) {
                marker.setPosition(e.latLng);
            }else{
                marker = new google.maps.Marker({
                    position: e.latLng,
                    map: Gmap,
                    draggable:true
                });
            }

              Gmap.panTo(marker.getPosition());


        });

         google.maps.event.addListener(marker, 'dragend', function() {
             alert('Show something here');
        });

2 个答案:

答案 0 :(得分:2)

侦听器无法正常工作,因为在定义侦听器时,标记未定义。您需要将其放在定义标记的功能块中:

google.maps.event.addListener(Gmap, 'click', function(e) {
    if (marker) {
        marker.setPosition(e.latLng);
    } else {
        marker = new google.maps.Marker({
            position: e.latLng,
            map: Gmap,
            draggable:true
        });

        google.maps.event.addListener(marker, 'dragend', function() {
             alert('Show something here');
        });
    }

    Gmap.panTo(marker.getPosition());
});

在行动right here中查看。

答案 1 :(得分:0)

我可以帮你试试吗

google.maps.event.addListener(marker, 'dragend', function () {
    updateMarkerStatus('Drag ended');
    geocodePosition(marker.getPosition());
    alert('Show something here');
});

您还可以使用firefox在您的javascript中添加“Break”,以便您可以查看是否已触发javascript函数。有关的信息可以在here

找到