【问题标题】:Check whether a particular geo location (latitude and longitude) belongs to 'New York' or not?检查特定地理位置(纬度和经度)是否属于“纽约”?
【发布时间】:2012-02-17 10:55:10
【问题描述】:

我想了解某个特定地理位置是否属于“美国纽约”,以根据该位置显示不同的内容。我只有相应位置的经纬度详细信息,有没有人知道处理这种情况的解决方案。

【问题讨论】:

  • 谷歌地图地理编码服务可以解决问题。
  • 感谢 Mark,即使我没有使用多边形算法,您的评论也提供了一个尝试的想法...
  • 感谢 Scott,如果您提供一个 sn-p 代码来使用 Google 地图地理编码处理这种情况,那就太好了。

标签: php jquery geolocation latitude-longitude


【解决方案1】:

工作演示

使用 javascript 和 jquery:- Working demo - 只需按页面顶部的“运行”即可。

雅虎的 GEO API

我不久前使用雅虎的GEO API 做了类似的事情。您可以使用以下 YQL 查询来查找特定纬度和经度的位置:-

select locality1 from geo.places where text="40.714623,-74.006605"

你可以在YQL控制台here看到返回的XML

要从您的 javascript/php 代码中获取此 XML,您可以将查询作为 GET 字符串传递,例如:-

http://query.yahooapis.com/v1/public/yql?q=[url encoded query here]

这将只返回您可以使用 jquery 的 parseXML() method 解析的 XML

示例 Jquery 代码

这里有一些示例 javascript 来做你所追求的:-

// Lat and long for which we want to determine if in NY or not
var lat = '40.714623';
var long = '-74.006605';

// Get xml fromyahoo api
$.get('http://query.yahooapis.com/v1/public/yql', {q: 'select locality1 from geo.places where text="' + lat + ',' + long + '"'}, function(data) {

// Jquery's get will automatically detect that it is XML and parse it
// so here we create a wrapped set of the xml using $() so we can use
// the usual jquery selecters to find what we want   
$xml = $(data);

// Simply use jquery's find to find 'locality1' which contains the city name
$city = $xml.find("locality1").first();

// See if we're in new york
if ($city.text() == 'New York')
    alert(lat + ',' + long + ' is in new york');
else
    alert(lat + ',' + long + ' is NOT in new york');

});

【讨论】:

  • 感谢 rgvcorley,实际上我正在使用 SimpleGeo API 进行这项检查,这可能不是 100% 完美,您使用 Yahoo GEO API 的解决方案看起来很酷,而且编码最少。我会尝试使用这个,非常感谢...
  • 您有什么想法可以使用 Google 地图地理编码来处理这种情况吗?
  • @Siva 是的,就像使用 https://maps.googleapis.com/maps/api/geocode/xml 作为获取 url 和 latlng : '40.714623,-74.006605',sensor: 'false' 作为参数一样简单。然后你只需要找到一个带有“纽约”的节点来检查 (click here to see result form Google API)。有关 google API 的详细信息,请参阅here。您能否选择我的答案 - 我刚刚开始使用 SO,非常感谢 :)
猜你喜欢
  • 1970-01-01
  • 2017-08-08
  • 1970-01-01
  • 2013-12-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-22
  • 2011-12-13
  • 2018-07-26
相关资源
最近更新 更多