arcgisapiforjavascript(1)基本的地图显示及spatialReference

更新时间:2023-06-08 23:56:30 阅读: 评论:0

arcgisapiforjavascript(1)基本的地图显⽰及
猕猴桃怎么吃
spatialReference
折腾arcgis api for javascript有两个星期了,也算是过关斩将,有所收获,在此记录下⼼得。
准备⼯作
jsapi包可以下载下来也可以使⽤在线的
<link rel="stylesheet" href="/3.15/esri/css/esri.css">
<script src="/3.15/"></script>
如果想使⽤本地的,需要简单的部署⼀下,搜索arcgis api for javascript 本地化部署,这⾥不多说了。积食按摩什么部位
地图显⽰
require([
'esri/map',
'esri/geometry/Extent','esri/layers/ArcGISTiledMapServiceLayer',
'esri/layers/ArcGISDynamicMapServiceLayer',
], function (
Map,
Extent,祸女萧墙
ArcGISTiledMapServiceLayer,
ArcGISDynamicMapServiceLayer,
) {
//地图服务地址
var BASE_SERVER = '/ArcGIS/rest/rvices/World_Street_Map/MapServer',
//地图对象
心烦意乱的意思map;
  function createMap(data) {
//这⾥extent指定了map初始化时的显⽰范围,extent⾥除了xmin,xmax,ymin,ymax还有个重要属性spatialReference,即在此时确定了map的坐标系//extent不是必选参数,创建map时除了容器ID是必需的,其它参数都是可选的
    map = new Map('mapDiv', {extent: new Extent(data.initialExtent)});
//这是我们的底图,如果不是⽡⽚数据地图,就new ArcGISDynamicMapServiceLayer
var layer = new ArcGISTiledMapServiceLayer(BASE_SERVER);
//map成功加载第⼀张地图时触发
//继续加载别的地图
var layer2 = new ArcGISDynamicMapServiceLayer(SERVER2);
高一英语单词表//设置只显⽰哪些图层
layer2.tVisibleLayers([0, 1]);
map.addLayer(layer2);怎么唱歌好听
//给map注册事件等等
//......
});
//加载图层
map.addLayer(layer);
}
//获取地图服务的json数据,在本⽂这个例⼦⾥没有什么特别作⽤,不要也可以
$.get(BASEMAP_SERVER, { f: 'json' }, createMap, 'jsonp');
});
地图的显⽰还是相当简单的,本⽂的重点在于谈谈我对spatialReference的理解
spatialReference(sr)
那么我们的map的sr是怎么确定的呢。创建map时可以指定extent同时也确定了sr;如果创建map时不指定sr,则map的sr等于加载到map上的第⼀个layer的sr。map的sr⼀旦确定就⽆法改变(如果你需要动态的改变sr,只有创建新的map实例去加载新sr的layer,再替换掉旧的map)。这也是为什么我们通常要先加载Tiled,再加载Dynamic。
⼿动转换也不复杂,jsapi提供了这样⼀个对象
require(["esri/geometry/webMercatorUtils"], function(webMercatorUtils) { /* code goes here */ });
它提供geographic和webMercator之间的相互转换,具体可以去官⽹api了解。
贴⼀⼩段代码
var paths = ds),
sr = this.map.spatialReference,
line, polyline;
if (!paths) return;
//paths⾥⾯是⼀串⽤经纬度表⽰的点,属于地理坐标系
line = new Polyline({ paths: paths, spatialReference: sr });
//判断sr是否是投影坐标系统
if (sr.isWebMercator())
//表⽰当前map不是地理坐标系统,那我们就需要转换line了,告诉它line⾥⾯的这些点其实是lon,lat⽽不是x,y,否则就飞到海⾥去了
line = aphicToWebMercator(line);
polyline = new Graphic(line, symbolLine);
教学技能aphics.add(polyline);
this.map.Extent().expand(1));
希望对⼤家有帮助,如有错误,请务必指正~
>学习感悟

本文发布于:2023-06-08 23:56:30,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1027576.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:地图   创建   加载
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图