2011-11-11 156 views
0

我正在使用google maps api v3編寫一個web應用程序,它顯示我的客戶感興趣的地點。這些不會出現在Google地圖上,我希望用戶能夠過濾結果以符合他們的特定需求。檢索Google Maps API地址的地區

我找到了工作,這樣對負載的用戶的當前位置在地圖中心。但是,如果他們願意,它允許他們輸入另一個地址。當我這樣做時,地圖默認爲美式地區的結果。

有沒有什麼辦法讓從用戶的當前位置地圖中的區域參數,並以此來獲得更多相關的結果?

另一個功能我想實現只對從給定的位置的確定(用戶指定的)距離內的結果搜索。目前所有的地方都存儲在一個MySQL數據庫(他們的地址,經度和緯度),我遍歷所有的地方,並使用this formula來確定距離。我預計我可能會在數據庫中獲得5萬個位置。

我應該擔心的響應時間,這樣算來,並且是有辦法,我可以把它更快?將這些數據存儲在MySQL數據庫中對於這種應用程序來說是個好主意?

回答

1

偏置地理編碼結果:

偏置地理編碼的結果,你可以使用navigator.language作爲region參數。它應該爲用戶提供更多相關的結果。

改善結果的其他方式可能是使用用戶的當前位置。您可以使用viewport biasing來改善結果(您可以計算用戶當前位置周圍的某個邊界框)。

使用用戶的當前位置獲得價值爲region參數是有問題的。我不知道是否有一些公共API從某個位置獲取IANA language subtag。但是,您可以使用反向地理編碼器來轉換位置,然後從結果中提取國家代碼。問題在於某些國家/地區代碼與所需的IANA語言子標籤不匹配(例如,ca是加拿大的國家代碼,但加泰羅尼亞語,瓦倫西亞語言子標籤)。然而,大部分時間使用國家代碼而不是語言子標籤應該會改善結果。

在MySQL數據庫中存儲經緯度:

恐怕在所有的地方是迭代和應用haversine公式可能是非常耗時的(有些研究一下here)。

大概在MySQL處理laglng數據的最佳方式是使用spatial extensions。 A nice blog post關於使用它。