首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ArcGIS API -不能对中心或缩放

ArcGIS API -不能对中心或缩放
EN

Stack Overflow用户
提问于 2015-11-07 17:06:41
回答 3查看 2.5K关注 0票数 3

所以,我使用ARCGIS来显示一些旧地图,这些地图应该从中心开始,然后放大到某个城市。在终于弄明白如何使用我想要的地图作为基本地图后,我挣扎了几个小时,试图在正确的地方缩放和中心。我可以放大到这个地方使用默认的基本地图(例如“街道”),但不使用我的自定义基本地图。我尝试过map.centerAndZoom和map.centerAt,但两者似乎都不起作用。有关守则:

代码语言:javascript
运行
复制
var map;
    require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "dojo/on", "dojo/_base/json", "dojo/dom-style", "esri/request", "esri/geometry/Point", "esri/dijit/Search", "esri/dijit/LocateButton", "esri/tasks/GeometryService", "esri/tasks/locator", "esri/tasks/ProjectParameters", "esri/symbols/PictureMarkerSymbol", "dojo/domReady!"],
    function(Map, ArcGISTiledMapServiceLayer) {
        map = new Map("venster_Midden_2_Map");
        var customBasemap = new ArcGISTiledMapServiceLayer(
        "http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_1815/MapServer");
        map.addLayer(customBasemap);
        map.centerAndZoom(51.1, 4.3, 0);
    });

有没有人知道如何使变焦和中心工作?或者是某些地图根本不允许这样的操作?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-11-07 18:24:19

centerAndZoom更适合于事件,比如用户从列表中选择了某个城市,并希望地图自动缩放到它。正如瑞奇所指出的,它还需要一个点,而缩放级别为零是行不通的。

如果您根本不想要任何Esri基本地图,那么在最初创建地图时不要使用它。微修改此贴图服务示例

代码语言:javascript
运行
复制
  require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "dojo/domReady!"],
    function(Map, Tiled) {
      map = new Map("map", {zoom: 3});

      var tiled = new Tiled("http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_1815/MapServer");
      map.addLayer(tiled);
    }
  );

然后,您将能够将centerAndZoom作为对事件的响应(例如,在平铺层已从其web源完全加载之后)。

代码语言:javascript
运行
复制
  require(["esri/map",
           "esri/layers/ArcGISTiledMapServiceLayer",
           "esri/geometry/Point",
           "esri/SpatialReference",
           "dojo/domReady!"],
    function(Map, Tiled, Point, SpatRef) {
      map = new Map("map", {zoom: 3});

      var tiled = new Tiled("http://tiles.arcgis.com/tiles/nSZVuSZjHpEZZbRo/arcgis/rest/services/Historische_tijdreis_1815/MapServer");
      map.addLayer(tiled);

      var cityCenter = new Point(121000, 495000, new SpatRef({ wkid: 28992 }));
      tiled.on("load",function(evt) {
        map.centerAndZoom(cityCenter, 6);
      });
    });

参考构造函数方法处理事件

票数 1
EN

Stack Overflow用户

发布于 2015-11-07 17:22:47

从相关的API文档中,centreAndZoom方法使用一个Point作为它的第一个参数。而且,你的缩放系数为零,看起来可能会引起问题。

点和非零缩放比例尺可能会带来更多的运气,如下所示:

代码语言:javascript
运行
复制
map.centerAndZoom(new Point(51.1, 4.3), 0.5);

该方法具有延迟返回类型,因此您可以提供一个回调,以便在方法调用完成后作出反应。

票数 0
EN

Stack Overflow用户

发布于 2018-05-29 18:17:40

也许是esri api错误,对我来说,它有时(但不总是)未能移动lng的地图中心,lat的缩放级别为18。

以下是我的工作方式:

建议:

map.centerAndZoom(new Point(lng, lat), 18);

替代方案:(有时,并不总是,它无法移动地图,也许ESRI需要修复Javascript v3.24的bug )

代码语言:javascript
运行
复制
map.centerAt(new Point(lng, lat));
//or
// map.centerAt(new Point(lng, lat, new SpatialReference({wkid: 4326})));
map.setZoom(18);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33585404

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档