Это мой первый пост. Я полностью застрял и могу использовать некоторую помощь с добавлением infoWindows в Google Maps. Данные, которые я намереваюсь использовать (НЕ API, который я использовал здесь), не имеют lat/lon и имеют несколько значений.Google Maps: Передача дополнительных аргументов в GeoCoder для InfoWindows
Все в порядке до infoWindow
, но я не могу передать никаких других аргументов в обратный вызов geocoder
. Заранее спасибо за помощь!
Кредит отправляется в Минхуэй Юй: http://goo.gl/zvAKZ8. Шахта использует разные данные для инфоиндуста и будет иметь около 30 маркеров.
Вот соответствующий код JS FIDDLE:
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 3,
center: new google.maps.LatLng(0, 0),
mapTypeId: google.maps.MapTypeId.ROADMAP
});
var infowindow = new google.maps.InfoWindow();
var marker;
var i;
var mapData;
var locations = [];
$(document).ready(function() {
$.ajax({
url: 'http://api.openweathermap.org/data/2.5/weather?q=London,uk',
async: false,
success: function (mapData) {
locations.push(mapData.name);
}
});
initialize();
});
function initialize() {
setMarkers(map, locations);
}
function setMarkers(map, address) {
for (var i = 0; i < address.length; i++) {
setMarker(map, address[i])
}
}
function setMarker(map, address) {
geocoder = new google.maps.Geocoder();
geocoder.geocode({
'address': address
},
function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map
});
google.maps.event.addListener(marker,
"click", function() {
//HAVING THE PROBLEM HERE. Not sure how to separate this from the callback.
infowindow.setContent(mapData.main.temp);
// But this works if you run it:
//infowindow.setContent(address);
infowindow.open(map, marker);
});
} else {
alert("Geocode was not successful for the following reason: " + status);
}
});
}
Спасибо! Он работал очень хорошо. – secondbreakfast