客戶地址轉換整合資料庫
孤狗谷歌 (0)
最近嘗試著把老舊的客戶資料,拿出來看能不能用地圖整合當然,要跟地圖整合,最重要的資料莫過於客戶地址了因此我參考了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大宗戶)