2015-01-28 3 views
-1

Я использую Google Geolocation с большим успехом. Вчера мы сделали шаг, чтобы улучшить наш скрипт storelocator, выполнив поиск по границам местоположения пользователей. Поэтому, когда мы геолокатируем, нам также нужны пользователи на северо-востоке и юго-западе широты и долготы.Получение границ с Google Geolocation, это правильно?

Мы получение их из консоли следующим образом (я вставляя всю функцию geolocating, в случае, если это помогает):

$('#geomate').click(function() { 
var geocoder; 
var split1; 
if (navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(successFunction, errorFunction); 
} 
//Get the latitude and the longitude; 
function successFunction(position) { 
    var lat = position.coords.latitude; 
    var lng = position.coords.longitude; 
    codeLatLng(lat, lng); 
} 
function errorFunction(){ 
    alert("Geolocator failed. If you're on a mobile device, please switch on your Location settings (GPS)"); 
} 
geocoder = new google.maps.Geocoder(); 
function codeLatLng(lat, lng) { 
    var latlng = new google.maps.LatLng(lat, lng); 
    geocoder.geocode({'latLng': latlng}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
      console.log(results) 
      if (results[1]) { 
       split1 = results[1].formatted_address.split(', '); 
       swlat = results[1].geometry.bounds.Ca.k; 
       swlng = results[1].geometry.bounds.va.j; 
       nelat = results[1].geometry.bounds.Ca.j; 
       nelng = results[1].geometry.bounds.va.k; 
       //formatted address 

       //if zipcode has a value, clear it first 
       if ($('input[name="zipcode"]').val() != '') { 
       $('input[name="zipcode"]').val(''); 
       } 
       //now enter the geolocation 
       $('input[name="zipcode"]').val(split1[1] + ', ' + split1[2]); 
       // if hidden geomtery fields exist, remove them 
       $('.storelocator_body form').find('.geomerty').remove(); 
       $('.storelocator_body form').append('<input type="hidden" class="geomerty" name="lat" value="' + lat + '">'); 
       $('.storelocator_body form').append('<input type="hidden" class="geomerty" name="lng" value="' + lng + '">'); 
       $('.storelocator_body form').append('<input type="hidden" class="geomerty" name="swlat" value="' + swlat + '">'); 
       $('.storelocator_body form').append('<input type="hidden" class="geomerty" name="swlng" value="' + swlng + '">'); 
       $('.storelocator_body form').append('<input type="hidden" class="geomerty" name="nelat" value="' + nelat + '">'); 
       $('.storelocator_body form').append('<input type="hidden" class="geomerty" name="nelng" value="' + nelng + '">'); 
      } else { 
       alert('No results found'); 
      } 
     } else { 
      alert('Geocoder failed due to: ' + status); 
     } 
    }); 
} 

Что интересно, есть ли более простой способ, чтобы получить оценки от запроса геолокации? Например, я пытался получить оценки с помощью следующего кода:

var bounds = new google.maps.LatLngBounds(swLatLn, neLatLn); 

однако я не увенчалась успехом, так как консоль возвращает ошибку «Uncaught ReferenceError: swLatLn не определен».

Большое спасибо!

+0

Голос, очевидно, из-за плохого утра ;-) Я провел много исследований, чтобы иметь возможность геокодирования и обратного геокодирования. На самом деле большая часть приведенного выше кода исходит из ответа, в котором у SA было немало голосов. Поэтому, чтобы понизить голос, мой вопрос не имеет смысла. Это может быть ОЧЕНЬ полезно для некоторых других любительских (!), Которые также могут захотеть получить границы места. Тем более, что я не видел подобного вопроса здесь, на SA! –

ответ

1

Не используйте results[1].geometry.bounds.Ca.k; и такие. Это недокументированные свойства, которые могут быть изменены.

Вместо этого используйте documented LatLngBounds methodsgetNorthEast() и getSouthWest(), которые возвращают LatLng.

Если вам нужны значения широты и долгот, вы можете получить их с lat() и lng() методами:

var lat = results[1].geometry.bounds.getSouthWest().lat(); 
var lng = results[1].geometry.bounds.getSouthWest().lng(); 
// And so on... 

Надеется, что это помогает.

+0

это обязательно действительно помощь. Спасибо вам за это. Каждый день я учусь немного больше. –

Смежные вопросы