JQuery выполняется до загрузки карты Google: «карта не определена» - PullRequest
3 голосов
/ 20 октября 2011

Помимо jQuery и Google Maps, в заголовке моей страницы есть два скрипта:

<script src="js/map.js" type="text/javascript"></script>
<script src="js/site.js" type="text/javascript"></script>

map.js содержит код для инициализации моей карты, а также имеет следующую функцию для размещения на ней маркера:

function placeMarker(marker){
    clearLocations();

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

    var marker = createMarker(latlng);

    map.setZoom(14);
    var latLng = marker.getPosition();
    map.setCenter(latLng);          

}

Когда я вызываю placeMarker внутри $(document).ready() в site.js, я получаю сообщение об ошибке «карта не определена». Однако, когда я вызываю другую функцию в site.js, которая выполняется при нажатии кнопки, placeMarker запускается в своем обратном вызове без проблем:

$.ajax({
    url: 'ajax/json.php',
    dataType: 'json',
    data: 'search_string='+inpMapSearch+'&country='+Country,
    success: function(data) {
        console.log(data);
        placeMarker(data);
    }
});

Означает ли это, что вызов функции placeMarker внутри $(document).ready() пытается выполнить до инициализации карты? Как запустить placeMarker после инициализации карты?

=== РЕДАКТИРОВАТЬ ===

В соответствии с запросом вот код, который инициализирует карту:

google.maps.event.addDomListener(window, 'load', load);

function load() {
    map = new google.maps.Map(document.getElementById("map"), {
        center: new google.maps.LatLng(18.735693,-70.162651),
        zoom: 8,
        mapTypeId: 'roadmap',
        mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
    });
}

1 Ответ

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

Поскольку событие загрузки окна запускается после document.ready.Следовательно, ваша карта инициализируется после document.ready.Вместо этого вы можете поместить другой код в $ (окно) .load

$(window).load(function(){
    your code here 
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...