У меня есть приложение для 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
.