我想弄清楚用户是否在使用地理定位的城市附近(在50英里半径内)。地理位置脚本,以确定当我在城市附近的城市评估为假
这是我的。它是一个脚本,用于检查我是否在阵列中的任何城市。 我在纽约城市的一个城市,但它正在评估其他人,因为我看到的功能发生。
下面是脚本:
if('geolocation' in navigator){
var lat, lon;
var SFlocations = ['richmond', 'berkely', 'daly city', 'oakland', 'san francisco'];
var NYlocations = ['new york', 'new york city', 'new jersey', 'newark', 'kendall park', 'fraklin park', 'new brunswick', 'east brunswick', 'edison', 'manhattan', 'queen', 'staten island', 'bronx'];
navigator.geolocation.getCurrentPosition(function(pos){
lat = pos.coords.latitude;
lon = pos.coords.longitude;
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?latlng='+lat+','+lon+'&sensor=true').done(function(res){
var results = res.results;
var address = results[2].address_components;
var city = address[1].long_name.toLowerCase();
if(jQuery.inArray(city, SFlocations) !== -1) $('#input').css('backgroundImage', 'url(/cityBackground/SanFrancisco/day.png)').css('backgroundPosition', 'bottom left').css('backgroundSize', 'cover');
else if(jQuery.inArray(city, NYlocations) !== -1) $('#input').css('backgroundImage', 'url(/cityBackgrounds/NYC/night.png)');
else setBGPerTime();
});
});
}
else alert("don't supports geolocation");
这里是一个JS小提琴:http://jsfiddle.net/s9VrT/
这似乎是合乎逻辑,我想不通为什么它被评估为false。
我将不胜感激任何和所有的帮助!
编辑:所以看来我抓住了结果数组的错误部分。看起来城市位于这里:results [0] [address_components] [2]。对于从不同位置进行测试的其他人来说,这是否正确?但是当我试图抓住数组的一部分时,它说address_components没有被定义。这里是一个小提琴:http://jsfiddle.net/s9VrT/4/
编辑:好,我知道用这个var results = res.results; var city = results[0].address_components[2].long_name.toLowerCase();
的城市。但是,我不认为这是正确的方式。这个位置获得了城市,但我认为它不适用于每个位置。 无论用户在哪个位置,我怎样才能获得城市?
那么,什么是谷歌从返回到底是什么? 'console.log(city)' – epascarello
@epascarello middlesex county。这是县的名字,但不是城市。 – gomangomango
不要硬编码这些数组索引。您需要使用正确的[“type”](https://developers.google.com/maps/documentation/geocoding/#Types) – geocodezip