我从头开始使用 Openlayers 6.1.1 构建 Rails 6 应用程序。使用 Webpacker 和 Turbolinks。许多事情都很好,涡轮链接也是如此。但有一件事不能正常工作:Openlayers。我用纱线添加了开放层,它基本上可以工作。所以我可以按预期创建地图,但我无法添加 VectorLayer。如果我这样做,我将收到一条控制台消息:
target.addEventListener is not a function
我的意思是我正在导入所有必需的库。在我的 application.js
require("@openlayers/pepjs")
require("ol")
在我的 map.js
import 'ol/ol.css';
import Feature from 'ol/Feature';
import Map from 'ol/Map';
import MVT from 'ol/format/MVT';
import View from 'ol/View';
import GeoJSON from 'ol/format/GeoJSON';
import Circle from 'ol/geom/Circle';
import TileLayer from 'ol/layer/Tile';
import OSM from 'ol/source/OSM';
//import { Circle as CircleStyle, Fill, Stroke, Style } from 'ol/style';
import VectorLayer from 'ol/layer/Vector';
import VectorSource from 'ol/source/Vector';
还有我的地图对象:
var vectorLayer = new VectorLayer({
source: new VectorSource({
url: 'v1/track/journey',
format: new GeoJSON()
}),
});
var OSMMap = new TileLayer({
source: new OSM({
attributions: [
'(c) OpenStreetMap'
],
opaque: false,
url: 'http://10.232.200.17/tiles/osm/{z}/{x}/{y}.png'
})
});
// OL Test
var map = new Map({
layers: [
OSMMapHLC1,
VectorLayer
],
target: 'map',
view: new View({
center: [0, 0],
zoom: 2
})
});
- 我试过没有turbolinks
- 我添加了 pepjs
- 我手动添加了 jquery
- 我试过传单。结果 VectorLayers 一个实时插件工作正常。
暗示。我必须使用 Openlayers 而不是 Leaflet。
非常感谢所有可以提供帮助的人。
问候马可