Как отобразить словарь GeoJSON в виде тепловой карты в Mapbox в приложении для iOS - PullRequest
0 голосов
/ 03 апреля 2019

У меня есть приложение для iOS в swift, которое успешно отображает карту с помощью библиотеки Mapbox iOS.

У меня также есть некоторые GeoJSON данные в виде словаря, которые я извлек из базы данных Redis. Я успешно напечатал эти данные в консоли XCode после того, как потянул их, и это выглядит так:

Optional(["city": chicago, "data": {
    features =     (
                {
            geometry =             {
                coordinates =                 (
                    "-87.86810699999999",
                    "41.966483"
                );
                type = Point;
            };
            properties =             {
                weight = 1;
            };
            type = Feature;
        },
                {
            geometry =             {
                coordinates =                 (
                    "-87.866905",
                    "41.96288"
                );
                type = Point;
            };
            properties =             {
                weight = 3;
            };
            type = Feature;
        },
/*and so on with many more point features...*/

Строка, которая преобразует необработанный массив, возвращенный из запроса Redis в приведенный выше словарь в коде, выглядит следующим образом:

let geojson_dict = (message[0] as! String).convertToDictionary()

Теперь я хочу поместить эти данные GeoJson поверх моего представления карты MapBox, определенного в коде как:

var mapBoxView: MGLMapView?

В тот момент, когда у меня есть данные GeoJson, mapBoxView добавляется как вид и виден.

Этот пример касается того, как это сделать:

https://docs.mapbox.com/ios/maps/examples/heatmap-example/

, но данные GeoJson имеют другую структуру, и они имеют дело не со словарем в памяти, а с извлечением GeoJson из URL. Это в сочетании с плохо документированным / прокомментированным примером затрудняет адаптацию к моему конкретному случаю использования.

Я попробовал следующее:

let feature = try! MGLShape(data: geojson_dict as Data, encoding: String.Encoding.utf8.rawValue) as! MGLShapeCollectionFeature

но это, похоже, не хочет работать с geojson_dict в качестве словаря и не добавит тепловую карту к представлению mapbox.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...