作者vivi50218 (vivi)
看板PHP
标题[请益] php+mysql 地理地址编码
时间Mon Sep 10 11:11:28 2012
小弟目前在写 地址转经纬度的程式
是利用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
1F:→ olctw:api 拿到的资料会比 google map 的旧,所以是正常的 09/10 11:40
2F:→ olctw:或改 v3 试试吧 09/10 11:40
3F:→ vivi50218:但是我手动输入里面的资料 出来的结果是正确的.. 09/10 12:15
已解决
※ 编辑: vivi50218 来自: 220.130.92.115 (09/10 13:10)
4F:推 herman602:要不要讲一下是什麽问题 跟 如何解决的@@ 09/13 17:21
5F:→ vivi50218:是编码的问题 读资料库的时候把编码改为utf-8就好 09/14 14:12
6F:推 flora556:我是初学者,想请教是否可以读取yahoo or google上的股价? 10/04 19:57