Проверьте, принадлежит ли конкретное географическое местоположение (широта и долгота) «Нью-Йорку» или нет? - PullRequest
0 голосов
/ 17 февраля 2012

Я хочу узнать, принадлежит ли конкретное географическое местоположение к «Нью-Йорк, США» или нет, чтобы отображать другой контент в зависимости от местоположения. У меня просто есть информация о широте и долготе соответствующего местоположения, кто-нибудь знает решение для этого сценария.

1 Ответ

2 голосов
/ 17 февраля 2012

Рабочая демоверсия

с использованием javascript и jquery: - Рабочая демоверсия - просто нажмите «Выполнить» вверху страницы.

API GEO Yahoo

Некоторое время назад я делал нечто подобное, используя GEO API от Yahoo. Вы можете посмотреть местонахождение определенной широты и долготы с помощью следующего запроса YQL: -

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

Вы можете увидеть XML, который возвращается в консоли YQL здесь

Чтобы получить этот XML из вашего кода javascript / php, вы можете передать запрос в виде строки GET, например: -

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

Это вернет только тот XML, который вы можете проанализировать, используя parseXML() метод jquery

Пример кода 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');

});
...