Как нарисовать стрелку над векторным слоем в Openlayers 3 map? Я попытался создать стрелку с помощью canvaselement, но не знаю, как нарисовать ее поверх карты ol3.Ничья стрелка без использования изображения в openlayers3
1
A
ответ
3
Прозрачный элемент не требуется. Вы можете взять пример стрелки из Openlayers site и добавить 2 пользовательских элемента LineString вместо значка. У вас уже есть пример угла поворота в радианах и события, где вы должны добавить свой код.
Надеюсь, следующий фрагмент делает трюк:
var source = new ol.source.Vector();
var styleFunction = function (feature) {
var geometry = feature.getGeometry();
var styles = [
// linestring
new ol.style.Style({
stroke: new ol.style.Stroke({
color: '#ffcc33',
width: 2
})
})
];
geometry.forEachSegment(function (start, end) {
var dx = end[0] - start[0];
var dy = end[1] - start[1];
var rotation = Math.atan2(dy, dx);
var lineStr1 = new ol.geom.LineString([end, [end[0] - 200000, end[1] + 200000]]);
lineStr1.rotate(rotation, end);
var lineStr2 = new ol.geom.LineString([end, [end[0] - 200000, end[1] - 200000]]);
lineStr2.rotate(rotation, end);
var stroke = new ol.style.Stroke({
color: 'green',
width: 1
});
styles.push(new ol.style.Style({
geometry: lineStr1,
stroke: stroke
}));
styles.push(new ol.style.Style({
geometry: lineStr2,
stroke: stroke
}));
});
return styles;
};
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
}),
new ol.layer.Vector({
source: source,
style: styleFunction
})
],
target: 'map',
view: new ol.View({
center: [0, 0],
zoom: 3
})
});
map.addInteraction(new ol.interaction.Draw({
source: source,
type: ('LineString')
}));
<script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script>
<link href="https://openlayers.org/en/v3.20.1/css/ol.css" rel="stylesheet"/>
<div id="map" class="map" tabindex="0"></div>
+0
Большое спасибо Икару !!! Это помогло мне. Используя это решение, я пытаюсь сделать двустрочную стрелку, я ее почти достигал, остался только поворот части двойной линии. Если вы не сможете это сделать, я снова поймаю вас! ;) – user6730740
Смежные вопросы
- 1. openlayers3 как всегда включить фриролл ничья
- 2. Изображения Масштабирование вниз в ничья в C#
- 3. Свободная ручная ничья без перекрытия
- 4. drawBitmap ничья ничья андроид
- 5. Обрезка изображения без использования маски изображения?
- 6. Как получить источник изображения от geojson openlayers3
- 7. OpenLayers3 значок составное изображение
- 8. Загрузка изображения без использования AJAX
- 9. Получите изображения без использования ImagePickerController
- 10. Показать прогресс без использования изображения
- 11. импорт openlayers3 в ember.js
- 12. Обрезка изображения в html без использования div
- 13. Обрезка изображения в андроиде без необходимости использования
- 14. Загрузка изображения в WebAPI без использования форм
- 15. Ничья в холсте
- 16. Как отличить функции Openlayers3
- 17. ES6 функции стрелка без параметров
- 18. Ничья линий с центрами без перекрытия
- 19. Анимация функций в OpenLayers3
- 20. ничья iimages в веб-страницы
- 21. диаграмма ничья в Qwidget
- 22. Ничья в Какао?
- 23. ручная ничья в qgraphicsview
- 24. Пользовательский ничья на NSToolbarItem
- 25. Ничья часть CGImage
- 26. CSS эффект «затонувшего»/«вставки» без использования изображения
- 27. Получить ориентацию растрового изображения без использования ExifInterface
- 28. Получить Ширина/Высота изображения без использования Drawing.Image
- 29. добавление изображения на страницу без использования источника
- 30. как загружать изображения без использования блоб
Вы видели http://openlayers.org/en/latest/examples/line-arrows.html? Однако вы должны предоставить немного больше контекста. Из вашего вопроса неясно, хотите ли вы создавать точки или линии со стрелками. – ahocevar
Я видел эту ссылку. Он использует «https://openlayers.org/en/v3.20.1/examples/data/arrow.png». Но я не хочу использовать какие-либо изображения (например, здесь png). Я хочу, чтобы стиль линии со стрелкой. – user6730740
Будет ли использовать элемент canvas в качестве возможного решения? Но как рисовать элемент холста в openlayers 3, используя ol.interaction.Draw? – user6730740