а) Во время локального запуска вашего кода я получил неопределенное значение pos, поэтому я переместил следующий код ' var map = new google.maps.Map (.. ' внутри getCurrentPosition () {...
б) Затем я получил еще одну ошибку «InvalidValueError: setMap: не экземпляр Map;» так создал «карту вар» во всем мире.
Загрузил карту успешно, но маркеры все еще не были загружены. во время отладки вашего кода на этом этапе ' var marker = new google.maps.Marker ({... ' он выполняет итерацию для всех маркеров из xml, но каким-то образом маркеры не добавляются на карту .. не знаю причина еще?
Так что я попробовал по-другому. Пожалуйста, посмотрите все маркеры из XML отображаются на карте. Здесь я просто получаю ' name ' в маркере, вам может потребоваться добавить другие параметры, такие как id, адрес и т. Д.
JSFiddle добавлен для справки
var infowindow;
var map;
//var downloadUrl;
function initialize() {
var mapOptions = {
zoom: 12,
center: new google.maps.LatLng(-33.868820, 151.209290),
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map'), mapOptions);
downloadUrl("https://storage.googleapis.com/mapsdevsite/json/mapmarkers2.xml", function(data) {
var bounds = new google.maps.LatLngBounds();
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName('marker');
for (var i = 0; i < markers.length; i++) {
var id = markers[i].getAttribute('id');
var address = markers[i].getAttribute('address');
var type = markers[i].getAttribute('type');
var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
bounds.extend(latlng);
var marker = createMarker(id, markers[i].getAttribute("name"), address, latlng, type);
}//finish loop
//map.fitBounds(bounds);
}); //end downloadurl
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
}
function createMarker(id, name, address, latlng, type) {
var marker = new google.maps.Marker({
position: latlng,
map: map
});
google.maps.event.addListener(marker, "click", function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({content: name});
infowindow.open(map, marker);
});
return marker;
}
JSFiddle