引入所需模块
本文使用的是4.28版本的arcgis api,其他版本的模块引入请查阅技术文档
require(['esri/Map',
'esri/Basemap',
'esri/views/MapView',
'esri/layers/TileLayer',
'esri/geometry/Point'
],(Map, Basemap, MapView, TileLayer, Point)=>{
// 添加代码
})
底图叠加
let basemap = new Basemap({
baseLayers: [
new TileLayer({
url: "", // 底图1服务地址
title: "Basemap"
}),
new TileLayer({
url:
"", // 底图2服务地址
})
],
title: "basemap",
id: "basemap"
});
添加到地图容器
let map = new Map({
logo: false,
basemap: basemap
});
var view = new MapView({
container: "viewDiv",
map: map,
zoom: 8,
maxZoom: 8,//最大空间等级
minZoom: 0//最小空间等级
})
地图定位
view.when(() => {
let metro = MetroStop.find((item) => item.code == metroCode)
if(!metro) return
let pt = new Point({
x: metro.x,
y: metro.y,
spatialReference: view.spatialReference
})
view.goTo({
center: pt,
zoom: 8
})
})
技术细节
提示:MapView里有提供center属性,通过传经纬度坐标实现定位,我的地图使用的是地方平面坐标,使用这个属性定位是不对的。在反复尝试之后,我只能选择以点的形式去定位,这是这个案例的一个实现方法。