Google Map - проблема с перетаскиванием карты не разрешена - PullRequest
1 голос
/ 02 января 2011

У меня есть карта 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();
        }
    }

Ответы [ 2 ]

2 голосов
/ 28 июня 2012

Удалить эту часть скрипта.у меня это сработало:

google.maps.event.addListener(map, 'drag', function(event) {
    placeMarker(event.latLng);
    google.maps.event.removeListener(myListener);
});
1 голос
/ 19 декабря 2011

Не ясно, идет ли речь о целой карте или маркере, когда вы говорите «перетаскивается мышью». Насколько я могу судить, ваше решение только для маркеров.

Код ниже показывает, как вы можете установить свойство перетаскивания, которое может быть истинным или ложным. true означает, что перетаскиваемый false означает, что нет.

function placeMarker(location) {
            var marker = new google.maps.Marker({
                position: location,
                map: map,
                draggable: true
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...