Клуб API Карт

какие есть методы/свойста у new YMaps.Geocoder

Дмитрий Рождественский
9 августа 2009, 02:09

помогите новичку.

хочу скрестить два примера

1) 

 

            var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});

            YMaps.Events.observe(geocoder, geocoder.Events.Load, function () {

                if (this.length()) {

                    geoResult = this.get(0);

                    map.addOverlay(geoResult);

                    map.setBounds(geoResult.getBounds());

    }

}


2) 

хочу добавить "красивую" на мой взгляд кнопку

нашел, что можно управлять ее видом. 

var s = new YMaps.Style();

s.iconStyle = new YMaps.IconStyle();

s.iconStyle.offset = new YMaps.Point(-12, -12);

s.iconStyle.href = "/images/001_06.png";

s.iconStyle.size = new YMaps.Point(24, 24);


и вот это ...

3)

var point8 = new YMaps.GeoPoint(43.984094,56.307601);

var placemark8 = new YMaps.Placemark(point8, {style: s});

placemark.setIconContent('<b>sdfsd</b> fgd</b>');

map.addOverlay(placemark8);

placemark8.setBalloonContent('<div style="text-align:center"><strong>test2</strong><br>ssfdfsdf</div>');     

 


вопрос в том, что тут есть 

 

var point8 = new YMaps.GeoPoint(43.984094,56.307601); 

var placemark8 = new YMaps.Placemark(point8, {style: s});

 


а мне этот Geocoder что возвращает не понятно, чую что там тоже где-то есть указательно координат, но не знаю как воспользоваться?

----------------------------------

update:

сам разобрался, может кому пригодиться

когда делаем запрос

 

  var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});

и потом берем скажем первую ответ

  geoResult = this.get(0);

получить координаты не очень сложно (жаль что не описано в документации, пришлось разбирать возвращаемый объект по запчастям)

  alert(geoResult._point.__lng  + " " + geoResult._point.__lat);

  то есть ...

 

  var point = new YMaps.GeoPoint(geoResult._point.__lng, geoResult._point.__lat);

  и дальше вся красота по вкусу!!! 

  var placemark = new YMaps.Placemark(point, {style: "example#customPoint"});

  placemark.name = "ssss";

  map.addOverlay(placemark);  


 



 

4 комментария
Подписаться на комментарии к посту
В документации всё описано: http://api.yandex.ru/maps/jsapi/doc/ref/reference/geocoder.xml Результаты процесса геокодирования возвращаются в виде группы объектов класса YMaps.GeocoderResult. http://api.yandex.ru/maps/jsapi/doc/ref/reference/geocoderresult.xml YMaps.GeocoderResult расширяет YMaps.Placemark. http://api.yandex.ru/maps/jsapi/doc/ref/reference/placemark.xml#getCoordPoint YMaps.Placemark#getCoordPoint возвращает точку координатной системы, к которой привязана метка.
Собственно тот путь которым вы получили координаты и не мог быть описан в документации, потому что это грубое нарушение нашего интерфейса.
Выше Азат привел метод которым можно взять координаты getCoordPoint.
Т.е. вместо
var point = new YMaps.GeoPoint(geoResult._point.__lng, geoResult._point.__lat);
нужно написать
var point = geoResult.getCoordPoint();

А вообще geoResult это уже placemark, так что можно просто так:

  var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()});

  geoResult = this.get(0);

  geoResult.setStyle("example#customPoint");

  map.addOverlay(geoResult);


По коду:

            var st70 = new YMaps.Geocoder("Екатеринбург, Стачек, д.70");
            // По завершению геокодирования инициализируем карту первым результатом
            YMaps.Events.observe(st70, st70.Events.Load, function (st70) {
            map.setBounds(st70.get(0).getBounds()); geost70 = st70.get(0); st70_x=geost70._point.__lng; st70_y=geost70._point.__lat; });

во вне obsert полученные координаты не видны.

Может можно как-то по адресу получить point для дальнейшего использования?

А можно  посмотреть какой-нибудь работающий пример, в котором обычная метка создается по координатам запроса  геокодера, но работа с ней проходит как  со стандартными метками (в коллекции с группами меток, с возможностью изменения их балунов, вида меток, их содержимого и т.п.)?