Поддержка Mapbox WMS для iOS - PullRequest
       15

Поддержка Mapbox WMS для iOS

0 голосов
/ 11 апреля 2019

Поддерживает ли mapbox сервис WMS? Я ничего не нашел в документации iOS, но в разделе Android я нашел это: https://docs.mapbox.com/android/maps/examples/add-a-wms-source/. Я пытался применить этот код на платформе iOS, но мое решение не работает. Первая проблема, с которой я столкнулся, была проблема с конструкцией URL.

let url = URL(string: wms1)! 

В конструкторе URL возникла проблема с {bbox-epsg-3857} в переданной строке.

Я пропустил проблему, допустив недопустимые символы:

let urlString = wms1.addingPercentEncoding(withAllowedCharacters: .illegalCharacters)
let url = URL(string: urlString!)! 

Затем я попытался добавить источник wms на карту, но это выдает некоторую ошибку

let source = MGLShapeSource(identifier: "test1", url: url, options: nil)
style.addSource(source)

let layer = MGLRasterStyleLayer(identifier: "test1", source: source)
style.addLayer(layer) 

Ошибка: [ОШИБКА] {} [Стиль]: не удалось загрузить исходный тест1:

1 Ответ

1 голос
/ 12 апреля 2019

Хотя нет конкретного примера, связанного с использованием WMS в качестве RasterTileSource с SDK iOS Maps на веб-сайте Mapbox, это, безусловно, возможно. Единственное требование - инициализировать исходный объект с помощью правильного шаблона URL-адреса плитки. Помимо шаблона URL, реализация будет идентична этому примеру: https://docs.mapbox.com/ios/maps/examples/source-custom-raster/

Разница лишь в том, что вам нужно будет изменить эту строку:

let source = MGLRasterTileSource(identifier: "stamen-watercolor", tileURLTemplates: ["https://stamen-tiles.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.jpg"], options: [ .tileSize: 256 ])

Чтобы отразить шаблон URL Tile вашего источника WMS, т. Е .:

let source = MGLRasterTileSource(identifier: "stamen-watercolor", tileURLTemplates: ["https://geodata.state.nj.us/imagerywms/Natural2015?bbox={bbox-epsg-3857}&format=image/png&service=WMS&version=1.1.1&request=GetMap&srs=EPSG:3857&width=256&height=256&layers=Natural2015"], options: [ .tileSize: 256 ])

⚠️ Отказ от ответственности: в настоящее время я работаю в Mapbox ⚠️

...