Как изменить координаты широты / спг в пикселях в Mapbox-gl-js внутри выражения?

#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. Приложил скриншот в описании того, чего я действительно хотел достичь в выражении.