因为项目需要使用vue2开发gis地图信息,在查阅众多资料后做一个记录方便自己后续查看
使用的是arcgis 4.21版本,离线部署
离线部署的具体方式可以去搜索其他文章,这里不再具体展开
初始代码如下:
let option = {
url: "http://20.221.21.214:8080/arcgisDemo/argis_js_4.21/init.js", // 注释掉就是使用官网的CDN,但是更建议使用离线部署的地址
css: "http://20.221.21.214:8080/arcgisDemo/argis_js_4.21/esri/css/main.css",
};
loadModules(
[
"esri/Map",
"esri/layers/TileLayer",
"esri/views/MapView",
"esri/config",
],
option
).then(
([Map, TileLayer, MapView, Config]) => {
Config.fontsUrl = "http://20.221.21.214:8080/arcgisFont/"; // 离线字体文件
this.layer = new TileLayer({
url: "http://20.211.11.26:6080/cdznjtgis/arcgis/rest/services/ditu/2D-4326-white-baseMap/MapServer",
});
this.map = new Map({
layers: [this.layer],
// basemap: "osm",
});
this.view = new MapView({
container: this.$refs.baseMap, // 视图的容器
map: this.map, // Map的实例放入视图中
center: [this.addform.longitude, this.addform.latitude], // 初始显示的地图中心点,经纬度
zoom: 12, // 当前地图缩放等级
logo: false,
});
// 给 “地图视图” 绑定点击事件
this.view.on("click", (e) => {
// hitTest 方法在点击位置上如果存在 Graphic(线或点),即可获取 Graphic 对象的整个数据
this.view.hitTest(e).then((res) => {
});
});
}
);以上代码可以实现基本的地图展示,如果需要添加点标记的话代码如下:
let option = {
url: "http://20.221.21.214:8080/arcgisDemo/argis_js_4.21/init.js", // 注释掉就是使用官网的CDN,但是更建议使用离线部署的地址
css: "http://20.221.21.214:8080/arcgisDemo/argis_js_4.21/esri/css/main.css",
};
loadModules(
[
"esri/Map",
"esri/layers/TileLayer",
"esri/views/MapView",
"esri/Graphic",
"esri/config",
],
option
).then(
([Map, TileLayer, MapView, Graphic, Config]) => {
Config.fontsUrl = "http://20.221.21.214:8080/arcgisFont/";
this.layer = new TileLayer({
url: "http://20.211.11.26:6080/cdznjtgis/arcgis/rest/services/ditu/2D-4326-white-baseMap/MapServer",
});
this.map = new Map({
layers: [this.layer],
// basemap: "osm",
});
this.view = new MapView({
container: this.$refs.baseMap, // 视图的容器
map: this.map, // Map的实例放入视图中
center: [this.addform.longitude, this.addform.latitude], // 初始显示的地图中心点,经纬度
zoom: 12, // 当前地图缩放等级
logo: false,
});
let point = {
type: "point", // autocasts as /Point
x: this.addform.longitude,
y: this.addform.latitude,
spatialReference: this.view.spatialReference,
};
let graphic = new Graphic({
geometry: point,
symbol: {
type: "picture-marker", // autocasts as SimpleMarkerSymbol
url: require("@/assets/images/monitor.jpg"),
// 图片的大小
width: "25px",
height: "25px",
},
});
this.view.graphics.add(graphic);
// 给 “地图视图” 绑定点击事件
this.view.on("click", (e) => {
// hitTest 方法在点击位置上如果存在 Graphic(线或点),即可获取 Graphic 对象的整个数据
this.view.hitTest(e).then((res) => {
});
});
}
);版权声明:本文为m0_63107133原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。