Листовка не работает с определенным слоем базовой карты в R

Недавно я работаю над проектом. Его единственное измерение — создать карту-листовку с различными слоями базовой карты. Вот код на данный момент;

library(leaflet)
library(leaflet.providers)


leaflet() %>%
  addProviderTiles("OpenStreetMap", group = "OpenStreetMap") %>%
  addProviderTiles("Esri.NatGeoWorldMap", group = "Esri.NatGeoWorldMap") %>%
  addProviderTiles("Esri.WorldStreetMap", group = "Esri.WorldStreetMap") %>%
  addProviderTiles("Esri.WorldTopoMap", group = "Esri.WorldTopoMap") %>%
  addProviderTiles("Esri.WorldImagery", group = "Esri.WorldImagery") %>%
  addLayersControl(baseGroups = c("OpenStreetMap",
                                  "Esri.NatGeoWorldMap", "Esri.WorldStreetMap", 
                                  "Esri.WorldTopoMap", "Esri.WorldImagery"),
                   position = "topleft") 

эта строка кода предоставляет мне рабочую карту листовок. Однако когда я добавляю другой слой, а именно TopPlusOpen.Color, как предложено на этом сайте: https://leaflet-extras.github.io/leaflet-providers/preview/, на карте не отображаются разные слои, которые она показывала ранее, и особенно исчезает управление слоями в левом верхнем углу. Вот код этой ошибки;

library(leaflet)
library(leaflet.providers)


leaflet() %>%
  addProviderTiles("OpenStreetMap", group = "OpenStreetMap") %>%
  addProviderTiles("TopPlusOpen.Color", group = "TopPlusOpen.Color") %>%
  addProviderTiles("Esri.NatGeoWorldMap", group = "Esri.NatGeoWorldMap") %>%
  addProviderTiles("Esri.WorldStreetMap", group = "Esri.WorldStreetMap") %>%
  addProviderTiles("Esri.WorldTopoMap", group = "Esri.WorldTopoMap") %>%
  addProviderTiles("Esri.WorldImagery", group = "Esri.WorldImagery") %>%
  addLayersControl(baseGroups = c("OpenStreetMap","TopPlusOpen.Color",
                                  "Esri.NatGeoWorldMap", "Esri.WorldStreetMap", 
                                  "Esri.WorldTopoMap", "Esri.WorldImagery"),
                   position = "topleft") 

Я не мог понять, что вызывает эту проблему, так как «TopPlusOpen.Color» является одним из вариантов слоев, и я с нетерпением жду, есть ли какие-либо аналогичные слои, которые я могу использовать. Я ценю любые комментарии и предложения и заранее благодарю вас.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
63
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Не похоже, что TopPlusOpen.Color является одним из поставщиков по умолчанию, включенных в список providers пакета leaflet. Тем не менее, вы по-прежнему можете использовать эти плитки, используя шаблон URL-адреса, указанный на веб-сайте в исходном вопросе. Вместо использования addProviderTiles(), который извлекает плитки из заранее определенного списка поставщиков, вы можете добавить свои собственные с помощью addTiles() и указать аргумент urlTemplate (не забудьте правильно их атрибутировать!).

library(leaflet)
library(leaflet.providers)

leaflet() %>%
  addProviderTiles("OpenStreetMap", group = "OpenStreetMap") %>%
  addTiles(urlTemplate = 'http://sgx.geodatenzentrum.de/wmts_topplus_open/tile/1.0.0/web/default/WEBMERCATOR/{z}/{y}/{x}.png',
           attribution = 'Map data: &copy; <a href = "http://www.govdata.de/dl-de/by-2-0">dl-de/by-2-0</a>',
           group = "TopPlusOpen.Color") %>%
  addProviderTiles("Esri.NatGeoWorldMap", group = "Esri.NatGeoWorldMap") %>%
  addProviderTiles("Esri.WorldStreetMap", group = "Esri.WorldStreetMap") %>%
  addProviderTiles("Esri.WorldTopoMap", group = "Esri.WorldTopoMap") %>%
  addProviderTiles("Esri.WorldImagery", group = "Esri.WorldImagery") %>%
  addLayersControl(
    baseGroups = c(
      "OpenStreetMap",
      "TopPlusOpen.Color",
      "Esri.NatGeoWorldMap",
      "Esri.WorldStreetMap",
      "Esri.WorldTopoMap",
      "Esri.WorldImagery"
    ),
    position = "topleft"
  )

Конечный результат с активными фрагментами базовой карты TopPlusOpen.Color выглядит следующим образом:

Огромное спасибо, это определенно то, что я искал. Я вижу, что это возможно, используя информацию на сайте, который я упомянул выше. В связи с этим позвольте мне спросить, можно ли дополнительно настроить эти слои, например язык мест и т. д., как описано: Developers.arcgis.com/documentation/mapping-apis-and-service‌​s/ …. Кроме того, есть ли способ включить разные карты из разных источников, например слои «Современная античная карта» с веб-сайта ArcGis, ссылку на который я только что дал.

mzkrc 08.05.2024 09:23

Да, но ссылка, на которую вы ссылаетесь, относится к сервису стилей базовых карт ArcGIS, для использования которого требуется учетная запись ArcGIS Platform или ArcGIS Online и ключ API. Итак, я полагаю, вы могли бы передать https://basemaps-api.arcgis.com/arcgis/rest/services/World_B‌​asemap_v2/VectorTile‌​Server/tile/{z}/{y}/‌​{x}.pbf в параметр шаблона urlTemplate, но вам также нужно будет передать ключ API. Я не могу это проверить, так как у меня его нет. Согласно документации, для параметра language можно установить любой код языка.

cristian-vargas 08.05.2024 19:05

Другие вопросы по теме