[請益] php+mysql 地理地址編碼
小弟目前在寫 地址轉經緯度的程式
是利用GOOGLE MAP API V2 的範例去修改的
利用php從資料庫讀入地址後 轉成經緯度在寫入資料庫
但是解碼出來的經緯度跟實際位置差很多
我把資料庫的地址複製貼上GOOGLE MAP 轉出來的事正確的
以下是程式碼 讀資料庫的部分就沒列出來了 有爬文看過的方法都試過了
還是一樣...請幫幫忙 困擾好久..
// Initialize delay in geocode speed
$delay = 0;
$base_url = "http://" . MAPS_HOST . "/maps/geo?output=csv&key=" . KEY;
// Iterate through the rows, geocoding each address
while ($row = @mysql_fetch_assoc($result)) {
$geocode_pending = true;
while ($geocode_pending) {
$address = $row["ADDR2"];
$id = $row["CUST_NO"];
$request_url = $base_url . "&q=" . urlencode($address);
$csv = file_get_contents($request_url) or die("url not loading");
echo $id.",".iconv("utf-8","big5",$address)."\r\n";
$csvSplit = explode(",", $csv);
$status = $csvSplit[0];
$lat = $csvSplit[2];
$lng = $csvSplit[3];
if (strcmp($status, "200") == 0) {
// successful geocode
$geocode_pending = false;
$lat = $csvSplit[2];
$lng = $csvSplit[3];
$query = sprintf("UPDATE cys_customer " .
" SET lat = '%s', lng = '%s' " .
" WHERE CUST_NO = %s LIMIT 1;",
mysql_real_escape_string($lat),
mysql_real_escape_string($lng),
mysql_real_escape_string($id));
$update_result = mysql_query($query);
echo $query."\r\n";
if (!$update_result) {
die("Invalid query: " . mysql_error());
}
} else if (strcmp($status, "620") == 0) {
// sent geocodes too fast
$delay += 100000;
} else {
// failure to geocode
$geocode_pending = false;
echo "Address " . iconv("utf-8","big5",$address) . " failed to geocoded. ";
echo "Received status " . $status . "\n";
}
usleep($delay);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.130.92.115
→
09/10 11:40, , 1F
09/10 11:40, 1F
→
09/10 11:40, , 2F
09/10 11:40, 2F
→
09/10 12:15, , 3F
09/10 12:15, 3F
已解決
※ 編輯: vivi50218 來自: 220.130.92.115 (09/10 13:10)
推
09/13 17:21, , 4F
09/13 17:21, 4F
→
09/14 14:12, , 5F
09/14 14:12, 5F
推
10/04 19:57, , 6F
10/04 19:57, 6F
PHP 近期熱門文章
PTT數位生活區 即時熱門文章