0

ここで本当に助けが必要です。以下のグーグルマップで検索結果の緯度/経度をループできるように、json_encodeを使用して配列を変換します。通常のマーカーを使用するだけでマップは正常に読み込まれ、jsonでエンコードされた配列をエコーすると次のようになります。

["55.7171, 13.2354","55.6411, 13.2122"]

以下のPhpコード(マーカー部分を除いてほとんど無視して、使用方法を理解してください)。

<?php
    if (isset($search_result)) {

        $markers = array();

        // Looping through the results and displaying appropriate data.
        foreach ($search_result as $result) {
            ?>
            <li><?= $result['first_name']; ?></li>
            <li><?= $result['last_name']; ?></li>
            <li><?= $result['address']; ?></li>
            <li><img width="80" height="80" src="<?php echo file_exists($result['profile_picture'])? $result['profile_picture'] : $img_profile_def; ?>"></li>
            <li><a href="profile.php?userid=<?= $result['id']; ?>">View This User</a></li><br><br>
    <?php
        $markers[] = $result['latitude'] . ', ' . $result['longitude'];
        }
    }
?>

マップなどを初期化するスクリプトの下部にあるJavascript。このコードを含むマップを取得しますが、マーカーはありません。

<script type="text/javascript">
function initialize() {
    var markers = <?php echo json_encode($markers); ?>;

    var myLatLng = new google.maps.LatLng( <?php echo $area_coords; ?> );

    var mapOptions = {
        center:myLatLng,
        zoom:15,
        mapTypeId:google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"),
            mapOptions);

    for (i = 0; i < markers.length; i++) {

    var position = new google.maps.LatLng(markers[i]);

    var marker = new google.maps.Marker({

        map:map,
        position:position

    });
    }
}

initialize();

4

1 に答える 1

2

これは、2つのfloatではなくLatLngパラメーターとして文字列を渡しているためだと思います...おそらく、JSONを次のように変更できます:[[lat、lng]、[lat、lng] ...]次のように:

$markers[] = [$result['latitude'],$result['longitude']];

その後

var position = new google.maps.LatLng(markers[i][0],markers[i][1]);
于 2013-02-25T17:11:01.693 に答える