|
发表于 2022-10-17 10:20:11
|
查看: 1983 |
回复: 0
01 ruoyi-vue-plus 中添加天地图
参考文章:
天地图官方文档 天地图官方api 文档 天地图代码示例
openlayers加载天地图
openlayers示例教程001:从0 到1 搭建开发环境
(1)在 菜单管理中追加新的路由菜单
(2)在ui 前端追加vue 文件
天地图核心导入核心代码
一、openlayers加载天地图
- let that = this;
- //普通地图
- that.layer.tiandituVecLayer = new TileLayer({
- title: 'generalMap',
- source: new XYZ({
- url: 'http://t3.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=daafafd5b7bb42922f10e3d1c06df824',
- crossOrigin: 'anonymous'
- }),
- visible:false
- });
- // 卫星影像图层
- that.layer.tiandituImgLayer = new TileLayer({
- title:'yx',
- source: new XYZ({
- url: 'http://t3.tianditu.com/DataServer?T=img_w&x={x}&y={y}&l={z}&tk=fea556436d51919f4a429933897be3c1',
- crossOrigin: 'anonymous',
- }),
- visible:true
- });
- //普通地图标记
- that.layer.tiandituCvaLayer = new TileLayer({
- title: 'generalMapZj',
- source: new XYZ({
- url: 'http://t3.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=daafafd5b7bb42922f10e3d1c06df824',
- crossOrigin: 'anonymous'
- }),
- visible: true
- });
- let container = document.getElementById('popup');
- let content = document.getElementById('popup-content');
- let closer = document.getElementById('popup-closer');
- closer.onclick = function () {
- that.overlay.setPosition(undefined);
- closer.blur();
- return false;
- };
- this.overlay = new Overlay({
- element: container,
- autoPan: true,
- autoPanAnimation: {
- duration: 250,
- },
- });
- this.map = new Map({
- target: 'map',
- // interactions: defaultInteractions().extend([modify]),
- overlays: [that.overlay],
- layers: [
- that.layer.tiandituImgLayer,
- that.layer.tiandituVecLayer,
- that.layer.tiandituCvaLayer
- ],
- view: new View({
- // projection: 'EPSG:4326',
- // center: [120.4750, 31.6337],
- center:[13410926.774433982,3715530.4937355495],
- zoom: 12,
- }),
- controls: defaults({
- zoom:false,
- attributionOptions: {
- collapsible: false
- }
- })
- });
- this.$root._olMap = this.map;
复制代码
二、地图点击事件
- let that = this;
- //地图点击事件
- this.map.on('singleclick', function (evt) {
- //点击获取经纬度
- console.log(evt.coordinate);
- // console.log(ol.proj.transform(evt.coordinate, 'EPSG:3857', 'EPSG:4326'));
- //判断当前单击处是否有要素,捕获到要素时弹出popup
- let thisFeature = that.map.forEachFeatureAtPixel(evt.pixel, function (fea, layer) {
- return fea;
- });
- let thisLayer = that.map.forEachLayerAtPixel(evt.pixel, function (layer) {
- return layer;
- });
- if (that.pointSelect){
- that.map.removeLayer(that.pointSelect);
- that.pointSelect=null;
- that.overlay.setPosition(undefined);
- that.modalShow1=false;
- that.modalShow=false;
- }
- that.pointSelect = new VectorLayer({
- className:"pointSelect",
- title: "pointSelect",
- source: new VectorSource({
- features: [thisFeature]
- }),
- style:new Style({
- //填充色
- fill: new Fill({
- color: 'rgba(255,0,0,0.3)'
- }),
- //边线颜色
- stroke: new Stroke({
- color: 'rgba(255,0,0,0.8)',
- width: 4
- }),
- //形状
- image: new Circle({
- radius: 7,
- fill: new Fill({
- color: '#ffcc33'
- })
- })
- }),
- zIndex:1000
- })
复制代码
|
|