Клуб API Карт

Прямое геокодирование и кластеризация API 2.0

Пост в архиве.
zhuvv35
1 августа 2012, 15:00

Здравствуйте, подскажите, пожалуйста, как мне получить координаты в geocode в API 2.0?

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

 

6 комментариев

через объект geocode. колбеком. http://api.yandex.ru/maps/doc/jsapi/2.x/ref/reference/geocode.xml

var myGeocoder = ymaps.geocode("Ашхабад"); myGeocoder.then( function (res) { map.geoObjects.add(res.geoObjects); }, function (err) { // обработка ошибки } );

 

p.s. хочу на странице темы прямую ссылку на корень документации апи2.0 ;-\

 

Это уже сразу добаление на карту, а мне надо добавить в массив, объектов, а потом добавить в кластере на карту.

myGeoObjects[i] = new ymaps.GeoObject({
  geometry: {type: 'Point', coordinates: [вот сюда надо вставить координаты полученные из geocode]},
properties: {
clusterCaption: '500 тыс. руб.',
  balloonContentBody: 'Описание'
}
}); 

Я правильно понимаю, что вы хотите делать по запросу на КАЖДЫЙ объект?

Поскольку у всех сайтов есть лимит в 25 (или сколько столько) тысяч запросов к геокодеру в месяц, это делать крайне неверно. При небольшой нагрузке на сайт - вы их выгребёте за несколько дней с вашим подходом.

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

Поэтому, совет: составьте справочник имеющихся у вас имён геообъектов или расширьте имеющиеся справочники, при редактировании объектов в этом справочнике (это может админка, например) делайте запрос к геокодеру и получайте нужные данные, показывайте их на карте все, чтобы контент-менеджер мог уточнить результат поиска и к названию была привязана ровно одна точка на глобусе (Number[2] - широта, долгота), и работайте с ней. Но ни в коем случае не делайте запросов к геокодеру для набора названий с клиентой части сайта — ничего хорошего из этого не выйдет.

Спасибо, теперь все поняла. Я не знала такого момента. Сделала через БД.

Как альтернативный вариант, если с админкой не получится, вы можете попробовать использовать другое АПИ:

http://api.yandex.ru/maps/doc/geocoder/desc/concepts/About.xml

И предварительно с помощью скрипта на сервере заполнить базу точками, а дальше по вашему обычному сценарию, по которому вы уже двигаетесь.

Спасибо большое :-)