Клуб API Карт

Нарисовать многоугольник по координатам области

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

Добрый день!

Имеется координаты области взятые таким способом: 

 

var regionAtirauGeometry = regionAtirau.getGeometry();

Получается вот такой массив: 

[
Object
  1. coordsArray[120]
    1. 0k.GeoPoint
      1. __lat48.249947
      2. __lng47.11499
      3. 1k.GeoPoint
    2. 2k.GeoPoint
    3. 3k.GeoPoint
    4. 4k.GeoPoint
    5. .....
    6. 119k.GeoPoint
,
Object
  1. coordsArray[3]
    1. 0k.GeoPoint
      1. __lat46.289806
      2. __lng49.288055
      3. 1k.GeoPoint
    2. 2k.GeoPoint
,
Object
  1. coordsArray[3]
    1. 0k.GeoPoint
      1. __lat46.409306
      2. __lng53.011002
      3. 1k.GeoPoint
    2. 2k.GeoPoint


,
Object
  1. coordsArray[5]
    1. 0k.GeoPoint
      1. __lat46.266193
      2. __lng49.760944
      3. 1k.GeoPoint
    2. 2k.GeoPoint
    3. 3k.GeoPoint
    4. 4k.GeoPoint

 т.е regionAtirauGeometry[0].coords[0] - координаты первой точки

regionAtirauGeometry[0].coords[1] - координаты второй точки

..... и так далее.

Как используя цикл можно нарисовать многоугольник на основе этих координат? Или есть какие другие пути решения?

 

 

 

 

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

С делал в цикле чтоб брал каждый элемент вот так:

 

var test_polygon = "[new YMaps.GeoPoint(" + regionAtirauGeometry[0].coords[0].__lat + "," + regionAtirauGeometry[0].coords[0].__lng+"),";

for (var i = 1; i < 119; i++) 

{

  test_polygon = test_polygon + "new YMaps.GeoPoint(" + regionAtirauGeometry[0].coords[i].__lat + "," + regionAtirauGeometry[0].coords[i].__lng + "),";

}

.... по аналогии следющий RegionAtirauGeometry[1]

.... по аналогии следющий RegionAtirauGeometry[2]

.....по аналогии следющий RegionAtirauGeometry[3]


var polygon = new YMaps.Polygon(eval(test_polygon),

  {

    style: "polygon#Example",

    hasHint: 1,

    hasBalloon: 1

  });

polygon.name = "Атырауская область";

polygon.description = "Атырау";

map.addOverlay(polygon);

 

Но на карте вообще область вырисовывается не та:-(

Брать координаты подряд каждый RegionAtirauGeometry[i] не правильно.

Подскажите как правильно их брать? по очереди из каждого блока?

 

Алексей Yarrr!
28 января 2016, 04:05

Ой, это же версия 1.1. ;-) В 2.0 такие вещи много проще делаются.

Спасибо за действенный совет :-)

А проблему решил тем что надо было поменять местами __lat и__lng:

test_polygon = test_polygon + "new YMaps.GeoPoint(" + regionAtirauGeometry[0].coords[i]. __lng + "," + regionAtirauGeometry[0].coords[i].__lat + "),";

не используй педальные свойства

там же есть методы getLat() getLng()