Клуб API Карт

TypeError: YMaps.Polygon is undefined

msiped
14 марта 2013, 13:54

Следующий код вызывает ошибку TypeError: YMaps.Polygon is undefined

 

var polygon = YMaps.Polygon.fromEncodedPoints("", "AAA");

myMap.addOverlay(polygon);

 

В принципе понятно, эти функции использовались в api 1.1. но как их заменить, т.е. вывести этот же многоугольник("osxNAhTSUwOuAgAAeAAAAFX___-CAQAA4QcAAPYIAAD6GAAAlvT__xv1___Q-v__9vj__07-__8=") средствами api 2.0 не получается

20 комментариев
Подписаться на комментарии к посту

У версий АПИ 2.0 и 1.1 разные неймспейсы

YMaps превратился в ymaps.

Прочитайте руководство по переходу на 2.0

и Вы перейдете быстрее чем подобное блуждание вслепую.

Я использовал api 2.0 

var base64Coords = "gMPJAYDw-gJAQg8AQEIPAEBCDwBAQg8A", geometry = ymaps.geometry.LineString.fromEncodedCoordinates(base64Coords); 

polygon= new ymaps.polygon(geometry); 

Но когда я добавлял сюда старые координаты, то ничего на карте не выводилось. 

1. имена конструкторов всегда с большой буквы

ymaps.polygon -> ymaps.Polygon

2. геометрии полигона и полилиний отличаются.

полигон состоит из нескольких полилиний (контуров)

 сегодня, 15:43

1. имена конструкторов всегда с большой буквы

ymaps.polygon -> ymaps.Polygon


Это я опечатался.


geometry.Polygon.fromEncodedCoordinates использовать это?

Использовал geometry.Polygon.fromEncodedCoordinates и старые координаты. В итоге области появились совсем в непредсказуемых местах

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

Попробуйте добавить параметр &coordorder=longlat

в урле подключения АПИ

Полигоны стали на место, но теперь объекты заняли их место. Все поменялось местами

поменял координаты у объектов местами и они стали на место....магия?

Если можно, ответь на встречный вопрос.
При создании полигона я получаю координаты таким методом:
polygon.geometry.getCoordinates()

Как мне закодировать их правильно в base64, чтобы потом вывести на карту вышеизложенным способом? 

Написал такой код (не ругайте за него)

 

polygon.editor.stopEditing();

var Coords   = polygon.geometry.getCoordinates();

var geometry = ymaps.geometry.Polygon.toEncodedCoordinates(Coords);


$('#OBJ_TERR').val(geometry);


Получаю координаты, но дальше возникает ошибка : e.getLength is not a function

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

geometry.fromEncodedCoordinates

то должен быть и геттер

geometry.toEncodedCoordinates

Ну я тут же и нашел его...но примеров в документации нет

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

Что то совсем непонятно. 

 

var geometry = ymaps.geometry.Polygon.toEncodedCoordinates();

не работает. У меня идет редактирование полигона. в конце я могу получить его координаты var Coords   = polygon.geometry.getCoordinates(); это ясно. Но как получить в base64 я что то не пойму. В варианте обратном мы передавали строку, что тут передавать??? Может мне массив координат в строку превратить и передать, но это уже бред какой то


 

получать надо у вашего полигона, а не у ymaps

Писал уже myPolygon.geometry.Polygon.toEncodedCoordinates(); не работает

myPolygon.geometry.toEncodedCoordinates();

Так я тоже писал
TypeError: myPolygon.geometry.toEncodedCoordinates is not a function

Понятно, извиняюсь, я был невнимателен.

Это не метод экземпляра геометрии полигона,

а статическая функция, принимающая геометрию полигона.

Правильно будет так:

 

var encodedCoords = ymaps.geometry.Polygon.toEncodedCoordinates(myPolygon.geometry);

Спасибо большое, заработало и я стал больше разбираться в api яндекс карт :-)