2014-10-31 67 views
-2

我有一個有趣的挑戰。我有一個全球谷歌地圖搜索表單,用戶被告知可以輸入城市,州或郵編。輸入zip:很好。進入城市:真棒。進入城市和州:美麗。進入一個狀態:沒有快樂。使用Bing Geolocation來區分城市或州的區別

我需要告訴用戶是否進入了一個城市或只是一個州/省。我發現Bing地理定位服務可以做到這一點。位置信息來自model.Location,可以是城市,州,城市&州或郵政編碼。

目前我使用的代碼:

int n = 0; 
bool isZipCode = int.TryParse(model.Location, out n); 
string[] nonZipLocation = model.Location.Split(','); 

//get lat and long 
XmlDocument xmlResponse = App.Geocoder.UserDefinedFunctions.Geocode(
    "", 
    isZipCode ? "" : nonZipLocation.Length > 1 ? nonZipLocation[1] : "", //state 
    isZipCode ? "" : nonZipLocation[0], //city 
    isZipCode ? n.ToString() : "", //zip 
    ""); //street address 
XmlNodeList locations = xmlResponse.GetElementsByTagName("Location"); 

if (locations != null && locations.Count > 0) { 
    model.Longitude = locations[0]["Point"]["Longitude"].InnerText; 
    model.Latitude = locations[0]["Point"]["Latitude"].InnerText; 
}//end if 

在那裏我遇到了問題是:1。 我第一次檢查,看看它是否是一個數字壓縮,並將其放置在拉鍊,如果它是。 2.我用逗號分開,看看我是否有一個城市和州/省。 (問題開始) 如果有多個元素,我放置一個城市和州。 如果拆分中只有一個元素,它會進入城市。

如何判斷用戶是否進入城市或州/省?我知道一個解決方案是建立一個詳盡的州,地區和省份名單。我知道另一個可能的解決方案可能我的第三方服務(除非bing地理位置可以爲我做,我不知道它)。還是有另一種解決方案?

+3

看來你的代碼有問題。但是,除非我們有[可以重現問題的代碼或信息](http://stackoverflow.com/help/mcve),否則我們無法提供幫助。否則,我們只是盲目猜測。 – gunr2171 2014-10-31 16:49:00

+0

但是建立一個州和省份的清單真的很無效嗎?即使有10萬以上,它也將是一個非常快速的查找與Hashset – cost 2014-10-31 16:50:19

+0

問題已編輯,包括代碼和撥打服務 – MetalPhoenix 2014-10-31 17:07:54

回答