Клуб API Карт

Изменение опций геокодера

Пост в архиве.
lobakin.a.v
14 мая 2012, 23:11

Здравствуйте!

Так как геокодер практически одинаково вызывается из разных мест, то сделал функцию геокодирования. Проблема в том, что надо иногда отключать boundedBy и kind.

Как это сделать до геокодирования? Если делаю так, то получаю ошибку.

 

function geocoding (mapObj, mapProvider, mapKind,mapBoundedBy {
if(mapBoundedBy!=0){
ymaps.geocode.options.set({
strictBounds: 'true',
boundedBy: mapBoundedBy
}
}
if(mapKind!=0){
ymaps.geocode.options.set({
kind: mapKind
}
}
var geocoder = ymaps.geocode(mapObj, {
provider:mapProvider,
results: 1
}).then(function (res) {...}
...
добавляем в коллекцию, выводим точку, центрируем карту,
...

 

2 комментария

 

У вас как минимум нехватает скобки в декларации функции

function geocoding (mapObj, mapProvider, mapKind,mapBoundedBy ({

почитайте статью про отладку кода чтобы избежать таких глупых ошибок.


Далее:

если в консоли вы посмотрите ymaps.geocode то увидите что это статическая функция, и у нее нет поля options, как и нет его у объекта Promises, который она возвращает. Передать ей опции можно только через второй параметр, и самый правильный способ сделать это - передавать объект.

Тогда вам не придется проверять наличие полей.

итого:

 

function geocoding(mapObj, opt) {
    var defaultOpt = {
         results : 1
    };
    ymaps.geocode(mapObj, ymaps.util.extend(defaultOpt, opt)).then(...
   

и тогда вызов:

 

geocoding('Москва', { boundedBy: [...], strictBounds : true, kind : mapKind, provider : mapProvider });

любые из этих полей можно будет убрать безо всяких проверок

Огромное спасибо!

P.S.

Скобки все есть,  я немного не корректно кусок кода привел - там в фунции еще строк 15, не хотел загромождать вопрос лишним кодом.