2014-10-31 68 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

回答