Клуб API Карт

Разные границы у точек, созданных геокодером и вручную

Пост в архиве.

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

Я пользуюсь API 1.х 

Моя проблема заключается в том, что перед установкой метки на  карту мне необходимо знать максимальный масштаб местности, на которой будет производиться установка метки.

Часть меток устанавливается в соответсвии с ответом от геокодера. Там я обращаюсь так:

maxZoomByGeocoder = map.getMaxZoom( this.get( i ).getBounds() ) );

Часть меток устанавливаются вручную. Там максимальный зум я хочу взять так:

maxZoomSelfMadePlacemark = map.getMaxZoom( ( new YMaps.Placemark( new YMaps.GeoPoint( coordX, coordY ) ) ).getBounds() ); 

Теперь внимание: даже если  coordX и  coodrY   совпадают с таковыми (долготой и широтой) в ответе геокодера, то максимальные зумы все равно будут разными. Причем в первом варианте зум будет намного больше.

Почему?  Как от этого избавиться?

1 комментарий
Sergey Konstantinov
28 января 2016, 04:31

Второй вызов некорректен.

new YMaps.Placemark( new YMaps.GeoPoint( coordX, coordY ) ) ).getBounds()

вернёт null, т.к. никто не задавал размеры объекта (собственно, их неоткуда взять).

В Вашем случае нужно прикинуть размеры объекта (если это населённые пункты, то характерным размером будет 0.1x0.1 градуса) и запросить maxZoom по этим размерам:

map.getMaxZoom(new YMaps.GeoBounds(

    new YMaps.GeoPoint(coordX - 0.05, coordY - 0,05),

    new YMaps.GeoPoint(coordX + 0.05, coordY + 0,05)

));