GoogleMaps: установка маркера по клику пользователя - PullRequest
0 голосов
/ 04 февраля 2012

В настоящее время я пытаюсь установить маркеры на карте на основе кликов пользователей.Я перепробовал все, что мог придумать, и НИЧЕГО не работает.Кажется, моя карта даже не обнаруживает щелчки.В настоящее время я стараюсь сделать скрипт как можно более простым, я просто пытаюсь обнаружить клики на карте на этом этапе:

<script type="text/javascript">
    function initialize() 
    {
        <!-- Set the initial location-->
        var latlng = new google.maps.LatLng(44, -71);

        <!-- initialization options -->
        var myOptions = {
            zoom: 8,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.HYBRID
        };

        <!-- The map variable
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        <!-- END INITIALIZE -->
    }
    google.maps.event.addDomListener(window, 'load', initialize);

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

    google.maps.event.addListener(map, 'click', function(event) {
       placeMarker(event.latLng);
    });
</script>

Я пробовал так много вариантов такогокод, каждый это никогда не работает.Если я изменяю его на «addDomListener (window, ...)», он работает, но никогда не использует карту в качестве слушателя.Идеи?

РЕДАКТИРОВАТЬ: ОК, решил, немного изменив функцию и изменив ее местоположение в скрипте:

<script type="text/javascript">
        function initialize() {
            <!-- Set the initial location -->
            var latlng = new google.maps.LatLng(44, -71);

            <!-- initialization options -->
            var myOptions = {
                minZoom: 3,
                zoom: 8,
                maxZoom: 9,
                center: latlng,
                mapTypeId: google.maps.MapTypeId.HYBRID
            };  
            <!-- The map variable-->
            var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

            <!-- Add the functionality of placing a marker on a click-->
            google.maps.event.addListener(map, 'click', function(event) {
                var marker = new google.maps.Marker({
                    position: event.latLng,
                    map: map
                   });
                alert('You clicked the map.'+event.latLng);
            }); 
            <!-- END INITIALIZE -->
        }
        google.maps.event.addDomListener(window, 'load', initialize);

        <!-- Add the functionality of placing a marker on a click-->
        google.maps.event.addListener(map, 'click', function(event) {
            var marker = new google.maps.Marker({
                position: event.latLng,
                map: map
               });
            alert('You clicked the map.'+event.latLng);
        }); 
    </script>

1 Ответ

1 голос
/ 04 февраля 2012

Я полагаю, вы разместили этот код в неподходящем месте (или сделали это в неподходящее время).Недавно я столкнулся с той же проблемой, и ее решение заняло некоторое время.Посмотри, что у меня работает:

var mapservice = {};

mapservice.map = {};
mapservice.options = {};
mapservice.putMarker = {};

mapservice.init = function (divName, textSearch)
{
    this.options =
    {
        center: new google.maps.LatLng(-34.397, 150.644),
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    this.map = new google.maps.Map($(divName)[0], this.options);

    google.maps.event.addListener(this.map, 'click', function (event)
    {
        mapservice.putMarker(event.latLng);
    });
    }
mapservice.putMarker = function (location)
{
//...
}
...