Динамически добавлять маркеры Google Map V3 с помощью jQuery - PullRequest
6 голосов
/ 21 октября 2011

Я добавляю маркеры в Карты Google динамически, используя jquery и Google Maps V3 API. При нажатии кнопки search_button на сервер отправляется запрос с использованием AJAX, который возвращает JSON-массив LatLng, соответствующий результатам, который будет использоваться для размещения маркеров. Однако в моем Javascript Conole я получаю ошибку: Invalid value for property <map>: map. Где я неправ? Вот мой код:

Заголовок HTML JS:

<script type="text/javascript">
  function initialize() {
  var latlng = new google.maps.LatLng(42.354183,-71.065063);
  var options = {
    zoom: 15,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), options);
}
</script>

JQuery

$(function() {

$("#search_button").click(function(e){
    e.preventDefault();


        // Place markers on map
        for( i = 0; i < json.length; i++) {
            var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
            var marker = new google.maps.Marker({
                position: latLng,
                map: map
            });
        }

    });
});
});

1 Ответ

20 голосов
/ 21 октября 2011

вы должны сделать глобальную переменную с именем map.Вот и все, на самом деле моя рекомендация - переместить все в файл javascript, подобный этому

    $(document).ready(initialize);
    var map;

function initialize() {
    var latlng = new google.maps.LatLng(42.354183,-71.065063);
    var options = {
        zoom: 15,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map($('#map-canvas')[0], options);

    $("#search_button").click(function(e){
    e.preventDefault();


        // Place markers on map
        for( i = 0; i < json.length; i++) {
            var latLng = new google.maps.LatLng(json[i].lat, json[i].lng);
            var marker = new google.maps.Marker({
                position: latLng,
                map: map
            });
        }

    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...