【问题标题】:Google Map - issue with map drag not releasing谷歌地图 - 地图拖动问题未释放
【发布时间】:2011-01-02 19:45:05
【问题描述】:

我有一个 google 地图,当鼠标点击被释放时,它没有被拖动。当我单击鼠标,拖动地图并释放单击时,地图仍会继续用鼠标拖动。当用户尝试放置标记时,这会导致一些奇怪的定位问题。这是我的代码:

    var initialLocation;
    var siberia = new google.maps.LatLng(44.9111410149792, -93.0537195);
    var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
    var browserSupportFlag =  new Boolean();



    function initialize() {
        var myOptions = {
            zoom: 6,
            mapTypeId: google.maps.MapTypeId.HYBRID
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        myListener = google.maps.event.addListener(map, 'click', function(event) {
            placeMarker(event.latLng);
            google.maps.event.removeListener(myListener);
        });
        google.maps.event.addListener(map, 'drag', function(event) {
            placeMarker(event.latLng);
            google.maps.event.removeListener(myListener);
        });

        // Try W3C Geolocation (Preferred)
        if(navigator.geolocation) {
            browserSupportFlag = true;
            navigator.geolocation.getCurrentPosition(function(position) {
                initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
                map.setCenter(initialLocation);
            }, function() {
                handleNoGeolocation(browserSupportFlag);
            });
            // Try Google Gears Geolocation
        } else if (google.gears) {
            browserSupportFlag = true;
            var geo = google.gears.factory.create('beta.geolocation');
            geo.getCurrentPosition(function(position) {
                initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
                map.setCenter(initialLocation);
            }, function() {
                handleNoGeoLocation(browserSupportFlag);
            });
            // Browser doesn't support Geolocation
        } else {
            browserSupportFlag = false;
            handleNoGeolocation(browserSupportFlag);
        }

        function handleNoGeolocation(errorFlag) {
            if (errorFlag === true) {
                alert("Geolocation service failed.");
                initialLocation = newyork;
            } else {
                alert("Your browser doesn't support geolocation. We've placed you in beautiful Minneapolis.");
                initialLocation = siberia;
            }
                map.setCenter(initialLocation);

        }

        function placeMarker(location) {
            var marker = new google.maps.Marker({
                position: location,
                map: map,
                draggable: true
            });
            map.setCenter(location);
            var markerPosition = marker.getPosition();
            populateInputs(markerPosition);
            google.maps.event.addListener(marker, "drag", function (mEvent) {
                populateInputs(mEvent.latLng);
            });
        }
        function populateInputs(pos) {
            document.getElementById("t1").value=pos.lat()
            document.getElementById("t2").value=pos.lng();
        }
    }

【问题讨论】:

  • 这是我在您的previous question 中发布的相同代码,它工作得很好..无论如何我已经将上面的代码粘贴到jsBin 并且它仍然工作!也许您的页面上有其他功能或标记导致问题
  • 我说的是地图是如何随着鼠标点击而拖动的。释放鼠标单击后,地图拖动也应释放。使用我发布的代码,地图拖动不会随鼠标释放而释放。以下是地图拖动行为的示例:jsbin.com/aqoso4

标签: javascript google-maps


【解决方案1】:

删除这部分脚本。它对我有用:

google.maps.event.addListener(map, 'drag', function(event) {
    placeMarker(event.latLng);
    google.maps.event.removeListener(myListener);
});

【讨论】:

    【解决方案2】:

    当你说“正在用鼠标拖动”时,不清楚是整个地图还是你所说的标记。 据我所知,您的解决方案仅适用于标记。

    下面的代码显示了如何设置可拖动属性,该属性可以为真或假。 true 表示可拖动 false 表示不可拖动。

    function placeMarker(location) {
                var marker = new google.maps.Marker({
                    position: location,
                    map: map,
                    draggable: true
                });
    

    【讨论】:

      猜你喜欢
      • 2012-08-07
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 2018-01-23
      • 2011-03-17
      • 2011-09-20
      相关资源
      最近更新 更多