尝试从 mySQL 数据库中包含的城市创建纬度和经度数组


Trying to create an array of latitudes and longitudes from cities contained in a mySQL database

我正在尝试使用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
        });

在你的帖子中,你正在混合PHP和Javascript。你不能在 PHP 标签中geocoder.getLatLng使用 Javascript 函数。

为了用纬度、液化天然气信息填充数据库,我建议使用 PHP 进行地理编码。因此,您将需要一张城市表。

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;

没有错误检查,但我希望你明白这一点。有了这个结果,你可以更新你的数据库。我希望您知道如何连接多个表以从用户和城市表中获取结果。