首页 文章

无法从地址列表中加载谷歌 Map

提问于
浏览
-2

我有一个问题,我真的尝试了一切!

我的网站上有一个页面,它加载了一个谷歌 Map ,从mysql数据库中获取地址列表 . 它工作但不知何故现在它不再工作了 .

这是加载 Map 的脚本:

<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()函数 . 我认为这个问题来自于特殊的字符,比如è或',因为我在 Map 工作的数据库中有较少的行 . 我得到一个Unespected标识符错误..然后initMap不是一个函数

更新:

我修复了地址中的单引号问题 . 现在 Map 加载但只加载前11个标记 . 这是加载的最后一个标记的渲染代码(marker10)e第一个未加载的标记(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:not LatLng或LatLngLiteral:in property lat:not a number”表示数据库中所有剩余的地址 .

所以我猜地理编码器不喜欢这些地址?但他们是对的!我用console.log()打印了所有变量的位置,它们很好(我可以看到所有这些) . 我在if语句之前打印了状态变量,我只得到11 OK . 生成标记的代码是正确的,如果我创建一个只有它可以工作的marker11的 Map . 但不知何故, Map 停止在某个时刻加载标记 .

有任何想法吗?

再次感谢!

1 回答

  • 0

    我解决了这个问题 . 这是由谷歌 Map 限制造成的

相关问题