#javascript #mapbox-gl-js
#javascript #mapbox-gl-js
Вопрос:
Добрый день!
Я хочу создать выражение в Mapbox-gl-js для радиуса круга. Проблема в том, что радиус окружности принимает значение в пикселях, но у меня есть географические координаты (широта / спг).
Когда я пытаюсь использовать Map.project внутри выражения ниже (не работает):
['*',
2,
[
'*',
['pi'],
[
'-',
map.project(['get', 'p1'])[0], //<--doesn't work
map.project(['get', 'p2'])[0] //<--doesn't work
]
]
]
const layer: mapboxgl.Layer = {
'id': seatLayerName,
'type': "circle",
'source': 'maine',
'paint': {
"circle-radius": [
'interpolate',
['exponential', 2],
['zoom'],
5,
...//code
13,
['*', 2, ['*', ['pi'], ['-', ['get', 'p1'], ['get', 'p2']]]] //<-- How to use map.project here
]
}
};
Geojson:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
8.156983852386475,
-4.0492925407532
]
},
"properties": {
p1: [8.156983852386475, -4.0492925407532], //<-- point 1 lat/lng
p2: [8.176983852386475, -4.0492925407532] //<-- point 2 lat/lng
}
},
....
]
}
Прикрепляю скриншот, который я хочу создать для создания выражения:
Mapbox предоставляет метод map.project для преобразования широты / спг в пиксель.
Но как я могу использовать это внутри выражения?
Любое предложение было бы полезно.
Комментарии:
1. Я не совсем понимаю, что вы пытаетесь сделать. Если ваши данные представлены в пиксельных координатах, что представляет это отрицательное значение (
-4.049....
)? Значение в верхней части вашей карты? Зачем вам вообще нужны значения пикселей для географических данных?2. Привет @SteveBennett внутренние свойства p1 и p2 — это географические координаты ([8.156983852386475, -4.0492925407532]) в широтах / спг. Я пытаюсь преобразовать их в пиксель, используя
.project
метод, но не могу этого сделать.3. Идея преобразования широты / спг в пиксель заключается в вычислении радиуса окружности. Поэтому, когда я пытаюсь скрыть Map.project и передать [‘get’, ‘p1’] в качестве аргументов. Выражение не извлекает значение из ([‘get’, ‘p1’]), вместо этого передает [‘get’, ‘p1’] как строку в аргументах.
4. Я все еще не понимаю, чего вы пытаетесь достичь. Каким должен быть радиус?
5. Приложил скриншот в описании того, чего я действительно хотел достичь в выражении.