2011-02-08 3 views
0

Я пытаюсь использовать службу геокодирования google с картой openlayer. этот shoudl работает без проблем ... не так ли? код я использую это так же, как, например, на Googles геокодировать апи документ:openlayers и google geocoder

function geoCode(){ 
    var adresse = $("observation_location_text").getValue(); 
    var geoCoder = new google.maps.Geocoder(); 
    alert(adresse); 
    geoCoder.geocode({ 'address': address}, function(results, status) {                                         
    if (status == google.maps.GeocoderStatus.OK) { 
     map.setCenter(results[0].geometry.location); 
     marker.moveTo(results[0].geometry.location); 
     marker.display(true); 
    } else { 
     alert("Geocode was not successful for the following reason: " + status); 
    } 
    }); } 

по какой-то причине я не получаю объект Geocoder. предупреждение с адресом никогда не выполняется.

с нетерпением жду некоторых намеков JAN

+0

ооо кстати карта и переменная маркера являются открытыми, поэтому это может не сработать. вызов для создания нового объекта Geocoder не возвращается. – Jan

+0

Вы должны знать, что TOS геокодирования google, к сожалению, диктует, что вы используете координаты для отображения на карту google. «Примечание: API геокодирования может использоваться только в сочетании с картой Google, поэтому результаты геокодирования, не отображая их на карте, запрещены. Для получения полной информации о разрешенном использовании см. Ограничения лицензии на использование лицензий API Карт». –

ответ

3

Попытка удалить какую-либо зависимость от OpenLayers и посмотреть, если он работает. Вы должны иметь возможность создавать объект геокодирования с простым API Карт Google.

О маленькой вещи, которую я заметил, является то, что вы читаете значение из ввода в переменную, называемую «адрес», но переходите к «адресу» переменной геокодера. Если это просто опечатка, а вторая переменная не объявлена, вы получаете ошибку скрипта, а код прекращает выполнение. Вероятно, именно поэтому объект геокодера никогда не создается.

+0

Да, вы правы, это была опечатка. тем не менее, вызов google.maps.Geocoder ошибочен. Я поместил вызов в функцию init, вызываемую при загрузке (funtion above был вызван событием ajax). То, что я получаю сейчас, это «Ошибка ссылки« Не показывать »: google не определен» Я включаю http://maps.google.com/maps/api/js?sensor=false и карты api с моим ключом api – Jan

+0

, очевидно, проблема в том, что google api не загружается правильно. Указанный вами URL-адрес используется в примере OpenLayers и хорошо работает для меня. В v3 вам не нужно использовать ключ api. попробуйте без ключа. – igorti

+0

true карты работают без ключа .... но я до сих пор не получаю объект Geocoder :( – Jan

1

Чтение комментариев по первому вопросу - уверены ли вы, что файлы Google Maps загружены при запуске «нового google.maps.Geocoder()»?

Вы говорите, что код вызывается при загрузке, каким образом вы это делаете? Поскольку вы используете jQuery, это должно быть сделано в $ (document) .ready().

0

Я пытаюсь сделать то же самое, что и вы. Вот моя проблема, это может помочь вам link

Кроме того, если вы попытаетесь передать точку геокодирования на слой с открытыми слоями, имейте в виду, что точки на векторных слоях с открытыми слоями подобны (lon, lat), но точки пришли из Геокодирование Google похоже на (lat, lon). Обратите внимание, что мы возвращаем это местоположение как объект LatLng, а не как форматированную строку »(Googles page)

Но я считаю, что проблема заключается в том, что« это означает, что «местоположение содержит геокодированную широту, долготу. Google геокодер, к сожалению, диктуют, что вы используете координаты для отображения на карте Google. ", как говорит Эль Duderino ...

о, а также, если вы используете Drupal, проверьте this из ...

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