2013-08-29 2 views
1

Я использую API Google Адресов для Nearby Search Requests. Я заметил одну вещь. Вот блок из одного выходного примера.Google Места поблизости Запросы поиска возвращают разные значения с перерывами

geometry: Object 
location: P 
ob: 28.579 
pb: 77.36831899999993 

Вы заметили параметры ob и pb. Я заметил, что они меняются довольно регулярно. Несколько недель назад они были jb и kb. Затем они стали lb и mb. Теперь, когда я их тестирую, это ob и pb.

Хотя я нашел способ использовать эти значения, не ссылаясь на них своими ключами, но мне все же интересно узнать, имеют ли эти ключевые имена какое-либо значение и почему они так часто меняются?

ответ

2

Это результат процесса минимизации (который принимает переменные, имена функций и свойств и последовательно их заменяет, чтобы уменьшить размер ваших скриптов). Всякий раз, когда что-то изменяется в процессе минимизации (изменения кода модификатора, изменения кода javascript и т. Д.), Есть вероятность, что замененное имя для определенного свойства отличается от предыдущего.

+0

Я не понял. Размер скриптов? Но это ответ, который я получаю после вызова этого метода: 'service.nearbySearch (запрос, обратный вызов);' –

+0

Я думаю, что весь или большинство кода Google в Javascript запускается через компилятор Google Closure, который среди прочего делает минимизацию. Это означает, что есть хороший шанс, что код, который обслуживает вас, будет минимизирован, и эти два свойства ответа каким-то образом переименованы компилятором. – Tibos

+0

Имеет смысл. Я буду ждать другого ответа, который мог бы дать лучшее объяснение, иначе я приму это. Благодарю. –

2

Как правило, для API Карт Google доступ к данным (например, к кодам, например) не осуществляется напрямую с объектами JavaScript, но запрашивает ответ. Это соседний Пример поиска от Google: https://developers.google.com/maps/documentation/javascript/examples/place-search Вы должны проверить, как он доступен в этом фрагменте:

function createMarker(place) { 
    var placeLoc = place.geometry.location; 
    var marker = new google.maps.Marker({ 
    map: map, 
    position: place.geometry.location 
    }); 
} 
1

У меня был аналогичная проблема при попытке разобрать результат JSON из мест автозаполнения выпадающих.

Чтобы избежать этой проблемы, вы можете вызвать методы lat и lng для объекта местоположения, а не пытаться использовать поля по имени.

Что-то вроде:

var longitude = place.geometry.location.lng(); 
var latitude = place.geometry.location.lat(); 

Хотя это стоит поделиться.

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