Помимо 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}
});
}