使用 Bing Geolocation 区分城市或州
Posted
技术标签:
【中文标题】使用 Bing Geolocation 区分城市或州【英文标题】:Telling the difference between city or state using Bing Geolocation 【发布时间】:2014-10-31 16:47:19 【问题描述】:我有一个有趣的挑战。我有一个全球谷歌地图搜索表单,用户被告知他们可以输入城市、州或邮政编码。输入 zip:太好了。进城:厉害。进入城市和州:美丽。进入只是一种状态:没有快乐。
我需要判断用户是只输入了一个城市还是一个州/省。我发现 Bing Geolocation 服务可以做到这一点。位置信息在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.我首先检查它是否是数字zip,如果是则将其放入zip中。 2. 我用逗号分开,看看我是否有一个城市和州/省。 (问题的开始) 如果有多个元素,我会放置一个城市和州。 如果拆分中只有一个元素,则进入城市。
如何判断用户进入的是城市还是州/省?我知道一种解决方案是建立一份详尽的州、领地和省列表。我知道另一种可能的解决方案可能我第三方服务(除非 bing 地理定位可以为我做这件事而且我不知道)。还是有其他解决方案?
【问题讨论】:
您的代码似乎有问题。但是,除非我们有code or information that can reproduce the problem,否则我们无能为力。否则,我们只是在盲目猜测。 但是建立一个州和省的列表真的那么低效吗?即使有 100,000 多个,使用 Hashset 查找也是非常快速的 已编辑问题以包含代码和对 bing 服务的调用 我投票决定重新打开,因为它现在是一个特定问题,但您还没有告诉我们代码的哪一部分给您带来了问题。 谢谢。我在上次编辑中提出了一个具体问题。 【参考方案1】:使用 Bing 地图 REST 位置 API 对您的地址进行地理编码。文档可以在这里找到:http://msdn.microsoft.com/en-us/library/ff701715.aspx
有关如何在 c# 中使用此服务的信息可以在这里找到:
http://msdn.microsoft.com/en-us/library/jj819168.aspx
http://msdn.microsoft.com/en-us/library/jj870778.aspx
我还建议您查看有关此服务的这些提示:http://blogs.bing.com/maps/2013/02/14/bing-maps-rest-service-tips-tricks/
【讨论】:
以上是关于使用 Bing Geolocation 区分城市或州的主要内容,如果未能解决你的问题,请参考以下文章
用于跟踪用户位置的 Google Geolocation Api - 国家、城市、州、时区
需要使用 Bing API 将查询转换为 lat 和 lon,适用于某些,但不是全部
geolocation/ 百度地图api Geolocation 定位当前城市信息