最近嘗試著把老舊的客戶資料,拿出來看能不能用地圖整合
當然,要跟地圖整合,最重要的資料莫過於客戶地址了
因此我參考了gmap的地址轉座標的函數
GClientGeocoder
雖然在地圖上顯示是家常便飯,許多網頁也已經有例子了
但這次我是希望能把回傳的經,緯度座標,寫入該客戶的經,緯度欄位
最後則是卡在javascript是前端作業,php則是後端
由於gmap的GClientGeocoder函式雖然可以把大部分的地址傳成座標
但是傳遞給php處理仍是個問題
於是乎,我打算參考ajax的作法,引用一些httpRequest的東西,應該就能溝通了
只不過中途有發現另一個方式,也就是使用js的window.open函式
該函式可以開啟一個新視窗,便可以用request的方法
把產生出來的經緯度當成變數丟給另一視窗處理
所以有達到我要的結果
只不過這樣的方式最後我還是宣告失敗了
基於以下幾點理由
1.運用GClientGeocoder+window.open回傳座標
每回傳一次就會開啟一個新視窗執行資料庫的連接
因此客戶資料若是20000筆,那麼跑到一半將會有無法預料的情形
解決方式:
手動調整次數,客戶id從1~100,分次執行
但可想而知,刷新視窗,數量少還好,數量一多,就開始鈍鈍的了
而且會有不知名的另開視窗,而不是在原本的視窗刷新
我猜想也許是前一視窗在刷新時尚未處理完寫入資料庫的動作
為了確保資料的完整性,在瀏覽器沒有整頁跑完之前,都會替你開一個新的視窗
真正使用ajax的方式,達到不換頁處理資料,應該會有優良的效果
但目前還在改寫中
2.客戶地址在15年前就沒有固定的格式,造成地址可隨意填寫
在建立資料時,常常有以大樓名稱或是社區名稱為地址(路名)的情況
導致函數無法正確判讀地址,因而無法產生該筆的座標
解決方式:無
3.路名,街名若有相似,比如"中山路","成功路"等各縣市均有的路名
則將會被選中回傳結果第一個陣列的位置,可能不是在該地區
解決方式:
將該區域設定經緯度上下限,家中的客戶均是新竹縣市的客戶
所以只要大約定一個經緯度上下限,只要落在該範圍內的就保留起來
另外的想法是,看客戶的家用電話判別,決定經緯度上下限的類別
若無家用電話則無解
4.地圖顯示應該分區域
之前有將郵局釋出的街道資料轉匯入至mysql
若能map到客戶的地址,搭配gmap的分佈顯示,應該會有不錯的效果
目前也僅能任憑迴圈把全部跑完,或是根據id限制數目而跑
尚無一個有意義的分類
如,依縣市分類,依街道分類,依客戶類型分類(生意戶or住家戶or大宗戶)
2008-10-17
客戶地址轉換整合資料庫
標籤:
孤狗
訂閱:
張貼留言 (Atom)
Comment Form under post in blogger/blogspot