Я следовал руководству по отображению пользовательского изображения в качестве маркера из этой статьи: https://medium.com/attentive-ai/working-with-openlayers-4-part-3-setting-customized-markers-and-images-on-map-da3369a81941
Однако при использовании моей собственной локальной структуры проекта для ссылки на мое изображение png оно не отображается на карте.
Вот мой текущий код:
var aPoint = new ol.geom.Point(ol.proj.fromLonLat([0, 0]))
var aFeature = new ol.Feature({
geometry: aPoint
})
var aFeatureStyle = new ol.style.Style({
image: new ol.style.Icon({
//src: 'https://upload.wikimedia.org/wikipedia/commons/2/2a/Dot.png'
src: '../../../dott.png'
})
})
aFeature.setStyle(aFeatureStyle)
var aSource = new ol.source.Vector({
features: [aFeature]
})
var aLayer = new ol.layer.Vector({
source: aSource
})
var map = new ol.Map({
target: 'map',
layers: [
new ol.layer.Tile({
source: new ol.source.OSM(),
}),
aLayer
],
view: new ol.View({
center: ol.proj.fromLonLat([0, 0]),
zoom: 14
})
})
При использовании варианта src:'https://upload.wikimedia.org/wikipedia/commons/2/2a/Dot.png' отображается нужная точка, но при использовании источник: '../../../dott.png' маркеры не отображаются.
Я определенно указал правильный путь к моему локальному файлу png, поэтому у меня нет идей, почему этот код не работает.
Я использую фреймворк Angular и запускаю его на локальном сервере разработки, используя Node.
В консоли браузера нет ошибок
Когда вы смотрите на вкладку сети в инструментах разработчика, загружается ли png?
Там написано 404, но я уверен, что путь к моему png-файлу правильный. Я даже использовал полный путь, и он все равно дает 404
Я нашел причину проблемы. Локальный png-файл пытается получить доступ, используя следующий URL-адрес в HTTP-запросе GET: localhost:4200/<полный_локальный_путь>/Dot.png, и это явно не ссылка на внутреннюю структуру проекта, поэтому файл png не может быть найден по этому адресу. Однако я до сих пор не знаю, как правильно обеспечить ссылку на локальный png-файл.
Это случилось со мной, я решил это, используя
import imagePath from '../../../dott.png'
и чем использовать переменную imagePath
вместо пути ../../../dott.png
Если я это сделаю, выдает ошибку «модуль не найден».
Итак, я, наконец, понял это, и я чувствую, что должен был знать это раньше, но, поскольку я новичок в Angular, я не сразу это заметил.
Любые изображения, на которые необходимо ссылаться в исходном коде в Angular, должны находиться в папке источник/активы/изображения в структуре проекта Angular. Затем, указав путь как источник: '../активы/изображения/Dot.png', изображение успешно загружается с ответом 200 OK, который отображается на вкладке «Сеть» инструментов разработчика браузера.
Что говорит консоль ошибок вашего браузера?