У меня проблема, и я действительно все перепробовал!
У меня есть страница на моем веб-сайте, которая загружает карту Google, получая список адресов из базы данных MySQL. Это работало, но теперь почему-то больше не работает.
Вот скрипт, который загружает карту:
<div id="map-canvas"></div>
<script type="text/javascript">
function initMap() {
var centro = new google.maps.LatLng(45.701116, 9.665754);
var mapOptions = {
zoom: 15,
center: centro
}
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
var contentString0 = '<div class="title">you are here!<div id="bodyContent"></div>';
//recupero
<?php for($i = 0; $i < count($indirizzi); $i++) { ?>
var contentString = '<div class="title">'<?php $nome_shop = str_replace(" ", "+",
$nomi[$i]); ?> + '<a href=kiwishop.php?shop=<?= $nome_shop ?>>
<?= $nomi[$i] ?></a></div><div class="address"><?= $sottotitoli[$i] ?></div>';
var infowindow<?= $i ?> = new google.maps.InfoWindow({
content: contentString
});
var location = "<?= $indirizzi[$i] ?>";
var geocoder = new google.maps.Geocoder();
//convert location into longitude and latitude
geocoder.geocode( { 'address': location}, function(results, status) {
if (status == 'OK') {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
}
var marker<?= $i ?> = new google.maps.Marker({
map: map,
position: {lat: lat, lng: lng},
title: '<?= $nomi[$i] ?>',
icon: '<?= $iconemappa[$i] ?>'
});
google.maps.event.addListener(marker<?= $i ?>, 'click', function() {
<?php for($j = 0; $j < count($indirizzi); $j++) { ?>
infowindow<?= $j ?>.close();
//not working
<?php } ?>
infowindow<?= $i ?>.open(map,marker<?= $i ?>);
});
});
<?php } ?>
}
<script async defer src="https://maps.googleapis.com/maps/api/js?key=AGzaNyBMYf1ZkLWd7VGH4q_I5eF92JK6cdfcFCs&callback=initMap"></script>
Переменные $ indirizzi (адреса), $ nomi и т. Д. Ранее были извлечены из базы данных, и я использовал для них функцию htmlentities ().
Я думаю, что проблема связана со специальными символами, такими как è или ‘, потому что у меня было меньше строк в базе данных, на которой работала карта.
Я получаю сообщение об ошибке «Неожиданный идентификатор», а затем initMap не является функцией
ОБНОВИТЬ:
Я исправил проблему с одинарной кавычкой в адресах. Теперь карта загружается, но только первые одиннадцать маркеров.
Вот отрендеренный код для последнего загруженного маркера (marker10) и первого не загруженного (marker11)
var contentString = '<div class="title">' + '<a href=kiwishop.php?shop=Artisan+Cafè>Artisan Cafè</a></div><div class="address">Cocktail esplosivi e tapas deliziose</div>';
var infowindow10 = new google.maps.InfoWindow({
content: contentString
});
var location = "Via San Bernardino 53, Bergamo";
var geocoder = new google.maps.Geocoder();
//convert location into longitude and latitude
geocoder.geocode( { 'address': location}, function(results, status) {
if (status == 'OK') {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
}
var marker10 = new google.maps.Marker({
map: map,
position: {lat: lat, lng: lng},
title: 'Artisan Cafè',
icon: '../images/icons/borgo-drink.png'
});
});
var contentString = '<div class="title">' + '<a href=kiwishop.php?shop=Atelier+di+Rita+Patelli>Atelier di Rita Patelli</a></div><div class="address">Composizioni e creazioni con materiali naturali</div>';
var infowindow11 = new google.maps.InfoWindow({
content: contentString
});
var location = "Via Borgo Canale 9b, Bergamo";
var geocoder = new google.maps.Geocoder();
//convert location into longitude and latitude
geocoder.geocode( { 'address': location}, function(results, status) {
if (status == 'OK') {
var lat = results[0].geometry.location.lat();
var lng = results[0].geometry.location.lng();
}
var marker11 = new google.maps.Marker({
map: map,
position: {lat: lat, lng: lng},
title: 'Atelier di Rita Patelli',
icon: '../images/icons/borgo-artigiani.png'
});
});
Я получаю эту ошибку: «InvalidValueError: setPosition: не LatLng или LatLngLiteral: в свойстве lat: not number» для всех оставшихся адресов в базе данных.
То есть геокодеру не нравятся адреса? Но они верны!
Я напечатал с console.log () расположение всех переменных, и они в порядке (я вижу все из них). Я напечатал переменную состояния перед оператором if и получил только 11 OK. Код для создания маркера правильный, потому что, если я создаю карту только с маркером11, она работает .. Но каким-то образом карта перестает загружать маркеры в какой-то момент.
Есть идеи?
Еще раз спасибо!
Я решил проблему. Это было вызвано ограничениями Google Maps
Других решений пока нет …