Мое текущее решение для загрузки скриптов карты Google - это старый способ.
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
Но это занимает много времени, и рендеринг контента задерживается.Затем я посмотрел на Документацию по Google Map и обнаружил, как можно асинхронно загружать javascripts карты Goole.
Так что я протестировал это в уже используемом яваскрипте.Это просто фрагменты моего сценария.
jQuery(document).ready(function() {
googleMaploadScript();
someFunction();
}
// Script for loading googlemap with callback to initialize Google map
function googleMaploadScript() {
var script = document.createElement("script");
script.type = "text/javascript";
script.src = "http://maps.google.com/maps/api/js?sensor=true&callback=initGoogleMap";
document.body.appendChild(script);
}
// Some function that calls populateGeoMap()
function someFunction() {
(...)
populateGeoMap();
}
// Script for populating google map with locations
function populateGeoMap() {
// This is where I initialized google map each time I load the page using google map
// But since I'm using a callback, I've commented this out.
//initGoogleMap();
var lat = '12.142123';
var lng = '54.524522';
latLng = new google.maps.LatLng(lat,lng); <-- THIS FAILS
}
// Google map init
function initGoogleMap() {
alert('test'); <-- THIS ALERT IS NEVER TRIGGERED
options = {zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP }
map = new google.maps.Map(document.getElementById("map_canvas"), options);
geocoder = new google.maps.Geocoder();
icon = new google.maps.MarkerImage("http://mysite.com/img/pin_red.png", null, null, null, new google.maps.Size(32, 32));
bounds = new google.maps.LatLngBounds();
}
Мой сценарий завершается с ошибкой new google.maps.LatLng(lat,lng);
, и это потому, что initGoogleMap()
не был запущен.
Кажется, что обратный вызов в script.src
не работал - потому что мое предупреждение никогда не срабатывало.Или это может быть из-за того, что вещи загружены не в правильном порядке, но все же оповещение должно было сработать.
Кто-нибудь сталкивался с этим?