2015-10-24 10 views
-1

Im пытается поместить карту google с информационным окном на моем сайте, но вам нужно загрузить асинхронно. Это код, я использую:Асинхронное окно сведений о Картах Google

function initialize(lat,lng) { 

    var mapProp = { 
     center: new google.maps.LatLng(lat,lng), 
     zoom:15, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     disableDefaultUI:true 
    }; 
    var map = new google.maps.Map(document.getElementById("googleMap"),mapProp); 
} 

function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.googleapis.com/maps/api/js?key=&sensor=false&callback=initialize"; 
    document.body.appendChild(script); 
} 

window.onload = loadScript; 

Он инициализируется с помощью события щелчка и распечатан с HTML выручено Javascript:

... 
var lat=40.7127; 
var lng=-74.0059; 
.. 
<div onclick="initialize('+lat+','+lng+');">map</div> 
.. 
html_str += '<div id="googleMap" class="map"></div>'; 
document.getElementById(id).innerHTML = html_str; 

Базовая карта инициализирует успешно, но у меня возникли проблемы с добавлением информации Окно:

var infowindow = new google.maps.InfoWindow({ 
    content:"Hello World!" 
}); 

infowindow.open(map,marker); 

Я попытался поместить этот код в функцию initialize(), но не повезло. Мне нужна помощь в адаптации этого кода окна информации к моему коду выше.

ответ

0

Чтобы добавить InfoWindow на карту вам нужно либо дать ему позицию или дать ему существующий маркер как якорь. Лучше всего я вижу, что вы должны получить ошибку javascript: Uncaught ReferenceError: marker is not defined.

Если у вас нет маркера, установите положение InfoWindow:

var infowindow = new google.maps.InfoWindow({ 
    content: "Hello World!" 
}); 
infowindow.setPosition(map.getCenter()); 
infowindow.open(map); 
0

В вашей функции loadScript, вызванной window.onload, у вас уже есть обратный вызов для инициализации. но в этом случае у вас нет назначенных соглашений. Я думаю, что в этом случае инициализация завершится неудачей.

ли тот факт, вы звоните explicty функцию инициализации с помощью мыши вы деление с попробовать функцию loadScript без обратного вызова

function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.googleapis.com/maps/api/js?key=&sensor=false"; 
    document.body.appendChild(script); 
} 
Смежные вопросы