Добавление геолокации в библиотеку Google Places - PullRequest
0 голосов
/ 04 марта 2012

Мы пытаемся создать приложение, которое позволяет пользователям просматривать места вокруг их текущего местоположения.

Вы можете видеть, что API Карт Google и Библиотека Google Адресов работают здесь, но не как один: http://www.blazingsasquatch.com/geo/index4.html

Вы заметите, что кнопка "покажи мне мое местоположение" тянет ваше текущее местоположение, и карта показывает произвольное местоположение в Бостоне с местами поблизости.

Мы создали переменные как для долготы, так и для широты, и мы попытались передать эти переменные непосредственно в переменную местоположения "pyrmont", но нам не повезло.

Первоначально мы попытались установить местоположение «pyrmont», используя следующее, также безуспешно: google.maps.LatLng (position.coords.latitude, position.coords.longitude);

Так, как мы можем получить текущее местоположение?

var pyrmont = new google.maps.LatLng ("ТЕКУЩЕЕ РАСПОЛОЖЕНИЕ ЗДЕСЬ");

Будет ли принимать переменную или только целое число?

Ответы [ 2 ]

0 голосов
/ 04 марта 2012

initialize будет вызываться до обратного вызова navigator.geolocation.getCurrentPosition(), поэтому вы не можете использовать результат в initialize (). (Вы можете просмотреть getCurrentPosition как асинхронный запрос)

Вызвать действие (создание маркера и места-запроса) внутри функции обратного вызова getCurrentPosition()

См. Рабочий демо: http://jsfiddle.net/doktormolle/C5ZtK/

0 голосов
/ 04 марта 2012

Конструктор LatLng принимает два числа с плавающей запятой, например:

pos = new google.maps.LatLng(-34.397, 150.644);

После просмотра исходного кода кажется, что проблема в другом: функция анонимного обратного вызова, которую вы передаете getCurrentPosition () вызывается, когда найдено географическое местоположение, что может занять некоторое время (особенно используя GPS и тому подобное). initialize () вызывается при загрузке страницы, что происходит раньше, поэтому place в настоящее время не задано (кроме того, оно не отображается в initialize (), поскольку оно не является глобальным переменная, но это не важно). Поэтому вам нужно переместить то, что вы в настоящее время делаете в initialize () , в функцию обратного вызова, которую вы передаете getCurrentPosition () . Затем вы можете использовать

var pyrmont = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
...