Как правильно вывести имеющийся контур геообъекта на Яндекс.Карте?
Есть GeoJson-контур Туниса, который корректно выводится на картах Google и Leaflet:
{"type": "Feature", "geometry": {"bbox": [7.524481642292244, 30.307556057246188, 11.488787469131012, 37.349994411766545], "type": "Polygon", "coordinates": [[[9.482139926805274, 30.307556057246188], [9.970017124072854, 30.53932485607524], [10.0565751481617, 30.961831366493527], [9.950225050505082, 31.376069647745258], [10.636901482799487, 31.761420803345757], [10.944789666394456, 32.081814683555365], [11.432253452203696, 32.368903103152874], [11.488787469131012, 33.13699575452324], [11.108500603895122, 33.293342800422195], [10.856836378633687, 33.76874013929128], [10.339658644256616, 33.78574168551532], [10.149592726287125, 34.33077301689771], [10.807847120821007, 34.83350718844919], [10.939518670300687, 35.698984076473494], [10.593286573945138, 35.94744436293281], [10.600004510143094, 36.410000108377375], [11.100025668999251, 36.899996039368915], [11.02886722173335, 37.09210317641396], [10.180650262094533, 36.724037787415085], [10.210002475636315, 37.230001735984814], [9.509993523810609, 37.349994411766545], [8.420964389691676, 36.94642731378316], [8.217824334352315, 36.433176988260286], [8.376367628623768, 35.479876003555944], [8.140981479534304, 34.65514598239379], [7.524481642292244, 34.09737641045146], [7.6126416357821824, 33.34411489514896], [8.430472853233368, 32.74833730725595], [8.439102817426118, 32.50628489840082], [9.05560265466815, 32.10269196220129], [9.482139926805274, 30.307556057246188]]]}, "properties": {"id": 82, "title": "Тунис"}}
Однако на Яндекс.Карте геоконтур страны отображается перевёрнутым и не в ожидаемом месте: https://jsfiddle.net/phwq1ytb/
Возможно, проблема с проекцией карты. Я пробовал добавлять другие проекции в опциях геообъекта, но ничего не получается:
let polygon = new ymaps.GeoObject(feature, {
// projection: this.maps.projection.sphericalMercator
// projection: this.maps.projection.wgs84Mercator
// projection: this.maps.projection.Cartesian
})
Помогите разобраться.
Ответы (1 шт):
Вы не учли порядок координат. По-умолчанию порядок в API Яндекс.Карт — [широта, долгота], а ваш Тунис создан с порядком [долгота, широта].
Вам следует поменять порядок координат при вызове API, добавив параметр coordorder=longlat в строку вызова, как это сделано в примере Яндекса для карты из Конструктора: https://yandex.ru/dev/maps/jsbox/2.1/delivery_zones
<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU&coordorder=longlat&apikey=<ваш API-ключ>" type="text/javascript"></script>