Страница 1 из 1

GoogleMap. GClientGeocoder работает только в Opera

Добавлено: 21 апр 2008, 21:36
DissDoc
Помогите мне разобраться, промучался две недели, так решения и не нашел (((
Вот код

Код: Выделить всё

var map = null;
    var geocoder = null;

    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        geocoder = new GClientGeocoder();
		
		showAddress("Moscow");
		
      }
    }

    function showAddress(address) {
		var test = null;
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              test = point;
            }
          }
        );
      }
	  
	  alert(test); // !!!!!!!!!! вот тут заковыка
    }
Собственно в Опере alert выдает координаты Москвы, а другие браузеры выдают null! Заметил, что другие браузеры вначале КАК БЫ выдают сообщение, а потом ищут город. Как сделать, чтобы корректно искались города. Помогите =) Тону! )

Добавлено: 22 апр 2008, 07:42
Максим Дубинин
а geocoder через API вообще для россии работает? я где-то видел, что поддерживаются только имена городов (возможно это устаревшая информация)

Добавлено: 22 апр 2008, 19:16
DissDoc
да, все поддерживается.
к тому же я написал, что в опере работает, а в остальных браузерах - нет!

Добавлено: 24 апр 2008, 02:11
Максим Дубинин
вроде все ок получается, попробуй alert(point) в if {} засунуть
http://gis-lab.info/qa/google-geocode-example.html

Код: Выделить всё

<script type="text/javascript">

    var map = null;
    var geocoder = null;

    function load() {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById("map"));
        map.setCenter(new GLatLng(37.4419, -122.1419), 13);
        geocoder = new GClientGeocoder();
		address="Moscow";
		showAddress(address);
      }
    }

    function showAddress(address) {
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, 13);
              alert(point);
            }
          }
        );
      }
    }
    </script>

Добавлено: 24 апр 2008, 19:47
DissDoc
Блин ))))))))
Так-то работает. Там внутри все работает. А я в массив пихаю эти координаты, и вне массива (когда нужно уже с координатами работать) массив остается пустым. Поэтому мне принципиально после выполнения поиска дергать координаты (((