Как нарисовать Dynami c GeoG JSON Точка в виде прямоугольника с помощью Mapbox iOS SDK - PullRequest
0 голосов
/ 03 мая 2020

У меня есть слой карты с удаленным источником Geo JSON. Я добавляю его на карту Mabpox, используя MGLShapeCollectionFeature, а затем использую MGLCircleStyleLayer и MGLSymbolStyleLayer для отображения данных вместе с некоторым текстом.

Он работает, как и ожидалось, и отображаются точки на карте:

Данные

{
  "features": [
    {
      "geometry": {
        "coordinates": [
          -120.644,
          35.238
        ],
        "type": "Point"
      },
      "properties": {
        "altim": 1019.0,
        "cover": "CLR",
        "data": "METAR",
        "dewp": 12.2,
        "fltcat": "VFR",
        "id": "KSBP",
        "obsTime": "2020-05-03T18:56:00Z",
        "prior": "5",
        "rawOb": "KSBP 031856Z 31018KT 10SM CLR 22/12 A3009 RMK AO2 SLP187 T02170122",
        "site": "San Luis Obispo/Ches",
        "slp": 1018.7,
        "temp": 21.7,
        "visib": 10.00,
        "wdir": 310,
        "wspd": 18
      },
      "type": "Feature"
    }
  ],
  "type": "FeatureCollection"
}

Результат

enter image description here

Теперь вопрос в том, возможно ли отобразить данные в виде скругленного прямоугольника, а не просто круга. Примерно так:

enter image description here

1 Ответ

0 голосов
/ 04 мая 2020

Это можно сделать, используя не одну позицию, а многоугольник, построенный из массива позиций в форме скругленного прямоугольника. Этот прямоугольник может быть заполнен шаблоном, текст которого вы хотите показать.

Загрузить шаблон заливки:

// Set the UIImage to be used for the fill pattern.
let fillPatternImage = UIImage(named: "stripe-pattern")!

// Add the fill pattern image to used by the style layer.
style.setImage(fillPatternImage, forName: "stripe-pattern")

Со слоем из векторного источника (массив многоугольников Positions, определяющий скругленный прямоугольник)

// Create a style layer using the vector source.
let layer = MGLFillStyleLayer(identifier: "drone-restrictions-style", source: source)

Добавьте шаблон заливки и установите непрозрачность шаблона:

layer.fillPattern = NSExpression(forConstantValue: "stripe-pattern")
layer.fillOpacity = NSExpression(forConstantValue: 0.5)

Используйте отдельный слой, чтобы нарисовать текст поверх скругленного прямоугольника.

Пожалуйста также обратитесь к этому Mapbox пример

...