1

Google Maps API を使用して、マーカーとして使用できる緯度と経度の配列 (都市の mySQL データベースから) を作成しようとしています。

PHP で都市を動的に取得し、javascript でジオコーディングする方法がわかりません。

これは私がこれまでに持っているものです。ジオコーダーの行が間違っていることは知っていますが、それをどのように操作するかはわかりません。アドバイスや解決策は非常に役に立ちます。

  var geocoder = google.maps.Geocoder();

    var markers = [

    <?php

    //orgnize fans by city
    $query = "SELECT city, state, COUNT(*) fans FROM users GROUP BY city ORDER BY fans DESC";
    $result = mysql_query($query) or die(mysql_error());
    while($row = mysql_fetch_array($result)){

    //pulls the city, state code from the database and stores it as a string in $address
    $address = '"' . $row['city'] . ", " . $row['state'] . '"';


       //  "$row['city'].", ".$row['state']";


        geocoder.getLatLng($address, function(point) {
                           $latitude = point.y;
                           $longitude = point.x;
        });
        echo "{ lat: \"".$latitude.", lng: ".$longitude.", name: "'"'.$row['city'].", ".$row['state'].'"'"},\n ";
        echo "<br/>";
    }

    ?>

    ];

    //var locationNameArray = ['Portland','Seattle','Los Angeles','San Diego','Las Vegas'];

    // Create the markers ad infowindows.
    for (index in markers) addMarker(markers[index]);
    function addMarker(data) {
        // Create the marker
        var marker = new google.maps.Marker({
            position: new google.maps.LatLng(data.lat, data.lng),
            map: map,
            title: data.name
        });
4

1 に答える 1

1

あなたの投稿では、PHP と Javascript を混在させています。geocoder.getLatLngPHP タグ内でJavascript 関数を使用することはできません。

データベースに緯度、経度情報を入力するには、PHP でジオコーディングを使用することをお勧めします。したがって、都市には 1 つのテーブルが必要です。

Table city:

id_city
name
state
lat
lng

そして、ユーザーテーブルには次への外部キーのみがありますid_city

Table users:

id_user
fi_city
...

PHP を使用して Google ジオコーダーから緯度、経度情報を取得する簡単な例を次に示します。

$address = urlencode('New York');
$googleApi = 'http://maps.googleapis.com/maps/api/geocode/json?address=%s&sensor=false';

$json = file_get_contents(sprintf($googleApi, $address));

$resultObject = json_decode($json);

$location = $resultObject->results[0]->geometry->location;

$lat = $location->lat;
$lng = $location->lng;

echo 'Lat: '.$lat.', Lng: '.$lng;

エラーチェックはありませんが、要点を理解していただければ幸いです。この結果を使用して、データベースを更新できます。複数のテーブルを結合して、users テーブルと city テーブルから結果を取得する方法を知っていることを願っています。

于 2013-01-30T21:50:43.177 に答える