Изменить текст отдельных меток на карте (OpenLayers)

#openlayers #openlayers-3 #openlayers-6 #angular-openlayers

#openlayers #openlayers-3 #openlayers-6 #angular-openlayers

Вопрос:

Я хочу изменить текст места на карте OpenLayers, его нужно изменить с Персидского залива на Арабский залив

Я попытался посмотреть, есть ли какой-либо способ внести это изменение, используя документацию OpenLayers API, но безуспешно.

https://openlayers.org/en/latest/apidoc/

Ниже приведено расположение карты

введите описание изображения здесь

Ниже приведен код :

 import TileLayer from 'ol/layer/Tile';
import VectorLayer from 'ol/layer/Vector';

....


vectorSource = new VectorSource({
    // url: '/assets/data/countries.geojson',
    url: '/assets/data/countries.json',
    format: new GeoJSON()
  });
  

  mapLayer = new VectorLayer({
    source: this.vectorSource,
    declutter: true
  });

 
  markerLayer = new VectorLayer({
    source: new VectorSource({}),
    style: this.mapStyle
  });

  linesLayer = new VectorLayer({
    source: new VectorSource({}),
    style: this.lineStyle
  });
....
  

Есть ли какой-либо способ изменить это? Я все еще просматриваю OpenLayers API, чтобы узнать, есть ли так или иначе.

Комментарии:

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

2. Спасибо, Ахочевар, я изменил заголовок на общий, также добавлю в свой код

3. Я добавил свой код @ahocevar

Ответ №1:

Вы не можете изменить метки на TileLayer с помощью OpenLayers API, потому что изображение карты предоставляется в виде изображений png, которые OpenLayers отображает по мере их получения.

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

Если вы продолжите использовать TileLayer с данными из Mapbox, как вы делаете в настоящее время, вы могли бы создать пользовательский стиль с помощью Mapbox Studio, где вы могли бы изменять метки как часть стиля.

Комментарии:

1. Нет, мы используем только слой VectorTile, позвольте мне поместить этот код

2. Отредактированный код больше не соответствует скриншоту, и в новом коде используется векторный слой, а не слой VectorTile.

Ответ №2:

У меня есть решение для этого, этого можно достичь, отредактировав стиль карты вhttps://www.mapbox.com/mapbox-studio / ( MapBox Studio), OpenLayers не имеет никакого отношения к содержимому вашей карты.

Я создал пользовательский стиль и интегрировал URL-адрес в наше приложение, после чего все было просто отлично.