前不久公司要求用arcgis做个东西/但是从来没有接触过,现在分享一点基本应用
import esriLoader from 'esri-loader';
import { getSensorDetail } from "../api/api";
import getporint from './icon';
// let Graphic;
// let SpatialReference = {};
let m_view;
let m_map;
let resultsLayer;
let image = "";
export default {
name: 'ArcgisMap',
data() {
return {
pointall: [],
Graphic: null,
markerLayer: null,
spatial:null,
markerLayerRemove:null
}
},
computed: {
getStoreItem() {
return this.$store.state.pointall
}
},
watch: {
getStoreItem() {
getporint.map((val,index)=>{
if(val.id == this.$store.state.menuid) {
image = val.icon;
}
else {
// image = getporint[1].icon;
}
})
this.getPoint(this.$store.state.pointall);
// markerLayer.removeAll();
}
},
mounted() {
this.pointall = this.$store.state.pointall;
if (this.$refs.viewDiv) {
this.getINmap();
}
},
methods: {
getMoveto(x,y) {
m_view.goTo(
{
position: {
x: x,
y: y,
z: 1000,
spatialReference: {
wkid: 2431
}
},
heading: 60,
tilt: 20
},
{
duration: 2000,
easing: "in-expo"
}
);
},
getINmap() {
const options = {
css: true
};
esriLoader.loadCss('css');
esriLoader.loadScript({ url: 'js' });
// 加载css
esriLoader.loadModules([
"esri/Map",
"esri/geometry/SpatialReference",
"esri/Graphic",
"esri/views/SceneView",
"esri/layers/GraphicsLayer",
"esri/layers/SceneLayer",
"esri/geometry/Extent",
"esri/layers/FeatureLayer",
"dojo/domReady!"
], options
).then(
([
Map,
SpatialReference,
Graphic,
SceneView,
GraphicsLayer,
SceneLayer,
Extent,
FeatureLayer
]) => {
m_map = new Map();
m_view = new SceneView({
map: m_map,
container: "viewDiv",
spatialReference: new SpatialReference(2431)
});
边界
let fullExtent = new Extent({
xmin: -96962.5918230044,
ymin: -40932.632712582854,
xmax: 12223.23071530734,
ymax: 17535.109222901025,
spatialReference: new SpatialReference(2431)
});
let m_sceneLayer = new SceneLayer({ url: "http://gisswweb.hkq.gov.hk/server/rest/services/Hosted/HKBuildingColorPlus/SceneServer",fullExtent });
let featureLayer = new FeatureLayer({
url:"http://gisswweb.hkq.gov.hk/server/rest/services/Hosted/HKScene3D_WFL1/FeatureServer/"
});
m_map.add(m_sceneLayer);
console.log("zhixinle")
m_map.add(featureLayer);
let _this = this;
点击撒点图标
// 点击事件
m_view.on("click", function(event) {
m_view.hitTest(event).then(function(response) {
console.log(response.results[0].graphic.attributes.val.id)
getSensorDetail({
id:response.results[0].graphic.attributes.val.id
}).then(res => {
if (res.Data.length > 0 ) {
let resultObj = res.Data[0];
// if(pointObj[0].id){
// this.$parent.isShowPercent=false;
// this.$parent.isShowWeek=false;
// }
// console.log(_this.$store)
_this.$store.commit("changePoiDetail", resultObj);
_this.$store.commit("getShowPersonData", true);
_this.$store.commit("getCloseprocessDetails", false);
} else {
_this.$store.commit("changePoiDetail", "");
}
});
})
});
// 动态缩放
this.getMoveto(3440.81404942000,2429.05288139000);
// 保存成全局对象 方便引用
this.Graphic = function (params) {
return new Graphic(params);
}
// this.GraphicremoveAll = function() {
// // m_view.graphics.removeAll();
// }
this.spatial = function(){
return new SpatialReference(2431);
}
this.markerLayer = function(params) {
// new GraphicsLayer().removeAll();
resultsLayer = new GraphicsLayer();
// resultsLayer.removeAll();
return resultsLayer.addMany(params);
}
this.markerLayerRemove = function() {
console.log("执行成功")
m_view.graphics.removeAll();
}
this.getPoint([]);
})
.catch(error => {
console.error("esriLoader.loadModules--->", error)
})
},
撒点
getPoint(data) {
if(resultsLayer) {
resultsLayer.removeAll();
}
let markerGraphicsArr = [];
data.map((val, index) => {
console.log(val)
let markerGraphic = this.Graphic({
geometry: {
spatialReference: this.spatial(),
type: "point",
longitude: val.cjLat,
latitude: val.cjLng,
z: 20
},
symbol: {
type: "picture-marker",
url: image,
width: "35px",
height: "35px"
},
attributes: {
// 传递的参数
val
}
})
markerGraphicsArr.push(markerGraphic);
})
this.getMoveto(data[0].cjLat,data[0].cjLng)
m_map.add(this.markerLayer(markerGraphicsArr));
}
},
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。