У меня есть следующие: https://jsfiddle.net/inkedraskal/h35dz9qd/5/Google Maps Ajax несколько маркеров JSon
я получаю сообщение об ошибке: Не удается назначить только для чтения свойства «__e3_» от 0
Я ранее был цикл, который называется функция после цикла for, но jshint не принимал ее. Так что теперь я использую Ajax, но я застрял. Я могу вернуть объекты в консоли, а также содержимое первого информационного окна (см. Консоль), после чего я получаю сообщение об ошибке.
В JS как следует ниже: (любые советы, приемы и т.д. будут оценены)
(function() {
renderGoogleMap();
function renderGoogleMap() {
var start_point = new google.maps.LatLng(0, 0);
// Creating a new map
var map = new google.maps.Map(document.getElementById("locations-map"), {
center: start_point,
zoom: 6,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
// Creating a global infoWindow object that will be reused by all markers
var infoWindow = new google.maps.InfoWindow();
function setMarkerPoints(map,marker) {
var bounds = new google.maps.LatLngBounds();
// Looping through the JSON data
// Creating a closure to retain the correct data, notice how I pass the current data in the loop into the closure (marker, data)
$.ajax({
type: "GET",
url: 'https://raw.githubusercontent.com/roryheaney/jsonexample/master/locatoins.json',
dataType: "json",
success: function (data) {
console.log(data);
if (data.length !== 0) {
var latLng = new google.maps.LatLng(data.lat, data.lng);
// Creating a marker and putting it on the map
var marker = new google.maps.Marker({
position: latLng,
map: map,
title: data.title
});
$.each(data, function (marker, data) {
var windowContent = '<h3>' + data.title + '</h3>' +
'<p>' + data.description + '</p>';
console.log(windowContent);
// Attaching a click event to the current marker
infobox = new InfoBox({
content: infoWindow.setContent(windowContent),
alignBottom: true,
pixelOffset: new google.maps.Size(-160, -45)
});
google.maps.event.addListener(marker, 'click', function() {
// Open this map's infobox
infobox.open(map, marker);
infobox.setContent(windowContent);
map.panTo(marker.getPosition());
infobox.show();
});
google.maps.event.addListener(map, 'click', function() {
infobox.setMap(null);
});
});
}
},
error: function (data) {
// alert('Please refresh the page and try again');
console.log('Please refresh the page and try again');
}
});
//END MARKER DATA
// bounds.extend(marker.getPosition());
// end loop through json
map.setCenter(start_point);
map.fitBounds(bounds);
}
setMarkerPoints(map);
}
})();
в своей скрипке вы закомментировали «google.maps.event.addDomListener (окно 'нагрузка', renderGoogleMap); ". Это было на случай аварии или просто не обновлено? – RMH
Он был прокомментирован намеренно, поскольку в JSFiddle 'google.maps.event.addDomListener (window, 'load', renderGoogleMap);' не запускается. –
ах, gotcha. Хорошо, спасибо, я очень ценю это. Не уверен, если бы вы знали, что в верхней части головы, но jshint говорит, что маркер уже определен внутри оператора .each. Есть идеи? – RMH