Не отображается полигон на яндекс карте
Почему-то не отображается полигон, ошибок нет, маршрут строится, в общем все работает, кроме отображения полигона centerPolygon, в чем может быть проблема?
let data = {
"start": {
"latitude": 47.2373283,
"longitude": 39.71242759
},
"finish": {
"latitude": 47.49700305,
"longitude": 39.94160203
},
"billing": {
"km": 5,
"min": 2.5,
"base": 50
},
"zones": [
{
"name": "Центр города",
"coordinates": [
[
[
39.6997833,
47.2381611
],
[
39.7078514,
47.219743
],
[
39.743042,
47.2272625
],
[
39.7350597,
47.2421236
],
[
39.6997833,
47.2381611
]
]
],
"coefficient": 1.2
}
]
}
ymaps.ready(() => {
let myMap = new ymaps.Map("map", {
center: [data.start.latitude, data.start.longitude],
zoom: 15
});
let centerPolygon = new ymaps.Polygon(data.zones[0].coordinates);
centerPolygon.options.set('visible', true);
myMap.geoObjects.add(centerPolygon);
routePanelControl = new ymaps.control.RoutePanel({
options: {
showHeader: true,
title: 'Расчёт стоимости поездки'
}
}),
zoomControl = new ymaps.control.ZoomControl({
options: {
size: 'small',
float: 'none',
position: {
bottom: 145,
right: 10
}
}
});
routePanelControl.routePanel.options.set({
types: {auto: true}
});
routePanelControl.routePanel.state.set({
type: 'masstransit',
fromEnabled: false,
from: [data.start.latitude, data.start.longitude],
toEnabled: false,
to: [data.finish.latitude, data.finish.longitude]
});
myMap.controls.add(routePanelControl).add(zoomControl);
routePanelControl.routePanel.getRouteAsync().then( route => {
route.model.setParams({results: 1}, true);
route.model.events.add('requestsuccess', () => {
let activeRoute = route.getActiveRoute();
if (activeRoute) {
let distance = route.getActiveRoute().properties.get("distance");
let duration = route.getActiveRoute().properties.get("duration");
let cost = calcCost(Math.round(distance.value / 1000), Math.round(duration.value / 60));
let balloonContentLayout = ymaps.templateLayoutFactory.createClass(
'<span>Расстояние: ' + distance.text + '.</span><br/>' +
'<span>Время: ' + duration.text + '.</span><br/>' +
'<span style="font-weight: bold; font-style: italic">Стоимость поездки: ' + cost + ' р.</span>');
route.options.set('routeBalloonContentLayout', balloonContentLayout);
activeRoute.balloon.open();
}
});
});
});
let calcCost = (distance, duration) => {
let baseKm = 2;
let baseMin = 5;
let cost = data.billing.base;
if(distance > baseKm) cost += (distance - baseKm) * data.billing.km;
if(duration > baseMin) cost += (duration - baseMin) * data.billing.min;
return cost;
}
Ответы (1 шт):
Автор решения: YaCor'
→ Ссылка
Порядок координат карты и её центра latlong, а полигона наоборот longlat. Вот полигон и строится у вас в Азербайджане, недалеко от Ходжавенд/Мартуни.
Про переопределение порядка координат, если это необходимо, можно почитать в документации Яндекс: https://tech.yandex.ru/maps/jsapi/doc/2.1/dg/concepts/load-docpage/