Я новичок, чтобы открыть слой 3, и я нашел пример рисования многоугольника :
Я видел в примере, что вы создаете векторный слой и в этом слое вы даете это гео JSON в качестве источника, гео JSON имеет особенности, которые выглядят примерно так:
{
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': [[[-5e6, -1e6], [-4e6, 1e6], [-3e6, -1e6]]]
}
Теперь это работает, и я получаю хороший полигон, что я не знаю, так это то, что это координаты? я имею в виду, что такое -5e6
?!, если у меня есть long и lat, такие как:
[[36.301744, 50.010456], [36.302180, 50.019864], [36.301025, 50.021730], [36.293856, 50.016215], [66.293682, 56.009240], [66.301744, 56.010456]]
Как я могу преобразовать его в эти координаты?,
На самом деле я выполнил поиск и я нашел несколько ссылок:
открыть слои 3, как нарисовать многоугольник программно?
Но после использования:
polygon.transform('EPSG:4326', 'EPSG:3857');
К transform
мои координаты (которые я до сих пор не знаю, во что я преобразую, потому что я не знаю, что означает что-то вроде -5e6
), я все еще не получил никакого результата
Может кто-нибудь подсказать, на чем основаны эти координаты? и как они работают?
Спасибо.
Обновление 01:
Вот код, который я запускаю, что приводит к cannot read property length of undefined
внутри geon/SimpleGeomerty
:
const GeographicalMap = ({ onClick }) => {
const myCoord = [[36.301744, 50.010456], [36.302180, 50.019864], [36.301025, 50.021730], [36.293856, 50.016215], [36.293682, 50.009240], [36.301744, 50.010456]]
const newCoord = transform(myCoord, 'EPSG:4326', 'EPSG:3857')
console.log('newCoord', newCoord)
const geojsonObject = {
'type': 'FeatureCollection',
'crs': {
'type': 'name',
'properties': {
'name': 'EPSG:4326'
}
},
'features': [
{
'type': 'Feature',
'geometry': {
'type': 'Polygon',
'coordinates': newCoord
}
},
]
};
var source = new VectorSource({
features: (new GeoJSON()).readFeatures(geojsonObject)
})
var layer = new VectorLayer({
source: source,
});
const layers = [layer]
return (
<Map
onClick={onClick}
layers={layers}
/>
)
}
Что меня больше всего беспокоит, так это то, что журнал консоли после преобразования показывает следующее:
[
null,
null,
[
36.301025,
50.02173
],
[
36.293856,
50.016215
],
[
36.293682,
50.00924
],
[
36.301744,
50.010456
]
]
Обновление 02:
Как следует из ответа cabesuon
, я сейчас использую код ниже:
const myCoord = [[36.301744, 50.010456], [36.302180, 50.019864], [36.301025, 50.021730], [36.293856, 50.016215], [36.293682, 50.009240], [36.301744, 50.010456]]
const polygon = new Polygon(myCoord);
polygon.transform('EPSG:4326', 'EPSG:3857');
console.log('polygon', polygon)
const feature = new Feature({
geometry: polygon
});
const source = new VectorSource();
source.addFeature(feature);
const layer = new VectorLayer({
source: source,
});
Но на карте ничего не нарисовано, после того, как консоль зарегистрировала многоугольник, я вижу проблема:
extent_: (4) [Infinity, Infinity, -Infinity, -Infinity]
ends_: (6) [0, 0, 0, 0, 0, 0]
Я не знаю почему, но в моем коде что-то не так, что приводит к неправильным extent_
и ends_