Показать кнопку на маркере Google Drag - PullRequest
1 голос
/ 12 августа 2011

Интересно, сможет ли кто-нибудь мне помочь, пожалуйста.

Я использую приведенный ниже код для обращения информации об адресе геокодирования, в данном случае, начиная с сетки ОС Ссылка

Может быть, кто-нибудь скажет мне, пожалуйста, как мне поступить, включив код, который при перетаскивании маркера будет отображать кнопку под названием «регенератосетка» в форме.

(function reversegeocodeosgridref() {

    var map, geocoder, latlng, marker;

    window.onload = function() {

        var myOptions = {
            zoom: 6,
            center: new google.maps.LatLng(54.312195845815246, -4.45948481875007),
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: true,
            mapTypeControlOptions: {
                style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
                position: google.maps.ControlPosition.TOP_RIGHT
            },
            navigationControl: true,
            navigationControlOptions: {
                style: google.maps.NavigationControlStyle.ZOOM_PAN,
                position: google.maps.ControlPosition.TOP_LEFT
            },
            scaleControl: true,
            scaleControlOptions: {
                position: google.maps.ControlPosition.BOTTOM_LEFT
            }
        };

        map = new google.maps.Map(document.getElementById('map'), myOptions);

        var form = document.getElementById('searchforlocationosgridref');

        form.onsubmit = function() {

            var lat = document.getElementById('osgb36lat').value;
            var lng = document.getElementById('osgb36lon').value;

            var latlng = new google.maps.LatLng(lat, lng);

            getAddress(latlng);

            return false;
        }

    }

    function geocodePosition(pos) {
        geocoder.geocode({
            latLng: pos
        },

        function(responses) {
            if (responses && responses.length > 0) {
                updateMarkerAddress(responses[0].formatted_address);
            } else {
                updateMarkerAddress('Cannot determine address at this location.');
            }
        });
    }

    function updateMarkerAddress(str) {
        document.getElementById('returnedaddress').value = str;
    }

    function getAddress(latlng) {

        if (!geocoder) {
            geocoder = new google.maps.Geocoder();
        }

        geocoder.geocode({
            'latLng': latlng
        }, function(results, status) {

            if (status == google.maps.GeocoderStatus.OK) {

                if (results[0]) {

                    map.setCenter(results[0].geometry.location);
                    if (!marker) {
                        map.setZoom(16);
                        marker = new google.maps.Marker({
                            map: map,
                            draggable: true
                        });
                    }
                }

                marker.setPosition(results[0].geometry.location);

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

                google.maps.event.addListener(marker, 'dragend', function() {
                    geocodePosition(marker.getPosition());
                    document.getElementById('osgb36lat').value = marker.position.lat();
                    document.getElementById('osgb36lon').value = marker.position.lng();

                    var point = marker.getPosition();
                    map.panTo(point);
                });

                latLng = [marker.position.lat(), marker.position.lng()].join(', ');
                geocodePosition(marker.getPosition());

                document.getElementById('returnedaddress').value = results[0].formatted_address;
            }
        })
    }
})();

Большое спасибо и всего наилучшего

Chris

Ответы [ 2 ]

0 голосов
/ 13 августа 2011

Вместо добавления еще одной кнопки в мою форму.Я добавил код Javascript, который будет обновлять ссылку на сетку ОС по мере перетаскивания маркера.

0 голосов
/ 12 августа 2011

Добавьте строку в маркер dragend событие, которое покажет кнопку.

В вашем событии Dragend:

document.getElementById('regenerateosgridref').style.display = 'block';
...