我正在尝试使用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
});
答案 0 :(得分:1)
在你的帖子中,你将PHP与Javascript混合在一起。
您不能在PHP标记内使用Javascript函数geocoder.getLatLng
。
要使用lat,lng信息填充数据库,我建议使用PHP进行地理编码。 所以你需要一张桌子用于城市。
Table city:
id_city
name
state
lat
lng
用户表只有id_city
的外键:
Table users:
id_user
fi_city
...
以下是如何使用PHP从Google地理编码器获取lat,lng信息的快速而肮脏的示例:
$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;
没有错误检查,但我希望你明白这一点。 通过此结果,您可以更新数据库。 我希望您知道如何连接多个表以从用户和城市表中获取结果。