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のGoogleMapsAPIの初期化機能:

<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配列を参照したいだけです。

上記のコードから得られるエラーメッセージは、Googleのサーバー上の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 に答える