#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-адрес в наше приложение, после чего все было просто отлично.