0

在 php 中,我创建了一个字符串,该字符串被传输到一个 javascript 对象数组中:

<?php
$markers = '';
while($loc = mysql_fetch_assoc($qry)){
    $markers .= "{id:'".$loc['id']."', title:'".$loc['city']."', pos: new google.maps.LatLng(".$loc['latitude'].",".$loc['longitude'].")},";
}
?>

在 javascript 中 Google Maps api 的初始化函数中:

<script type="text/javascript">
    <?php
    if($markers){
        echo 'var locations     = [' . rtrim($markers, ",") . ']';
        unset($markers);
    }
    ?>  

    //...

    //add old markers
    var markers = new Array();
    for (var i=0; i < locations.length; i++)
    {
        marker_stack[ locations[i].id ] = new google.maps.Marker({
            map: map,
            position: locations[i].pos,
            title: locations[i].title
        });
    }

    //...

</script>

我用标记填充了一个数组,因为我以后可能需要删除其中的一些。当我这样做时,我只想使用要删除的 id 引用 marker_stack 数组。

我从上面的代码中得到的错误信息在谷歌服务器上的一个 js 文件中:

Uncaught Error: Ungültiger Wert für Bauunternehmer-Parameter 0: [object Object],[object Object],[object Object],[object Object],[object Object],[object Object] main.js:36
4

1 回答 1

1

这里的问题是您的pos:属性是一个字符串:new google.maps.LatLng(51,0) 并且您不能将字符串传递给 Marker 构造函数。

解决方案是将pos_lat和设置pos_lng为数字并在构造函数中使用它们:

<?php
$markers = '';
while($loc = mysql_fetch_assoc($qry)){
    $markers .= "{id:'".$loc['id']."', title:'".$loc['city']."', pos_lat: ".$loc['latitude'].", pos_lng: ".$loc['longitude']."},";
}
?>

 

for (var i=0; i < locations.length; i++)
    {
        marker_stack[ locations[i].id ] = new google.maps.Marker({
            map: map,
            position: new google.maps.LatLng(locations[i].pos_lat,locations[i].pos_lng),
            title: locations[i].title
        });
    }
于 2013-02-04T16:57:11.190 回答