所以,我使用ARCGIS来显示一些旧地图,这些地图应该从中心开始,然后放大到某个城市。在终于弄明白如何使用我想要的地图作为基本地图后,我挣扎了几个小时,试图在正确的地方缩放和中心。我可以放大到这个地方使用默认的基本地图(例如“街道”),但不使用我的自定义基本地图。我尝试过map.centerAndZoom和map.centerAt,但两者似乎都不起作用。有关守则:
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);
});有没有人知道如何使变焦和中心工作?或者是某些地图根本不允许这样的操作?
发布于 2015-11-07 18:24:19
centerAndZoom更适合于事件,比如用户从列表中选择了某个城市,并希望地图自动缩放到它。正如瑞奇所指出的,它还需要一个点,而缩放级别为零是行不通的。
如果您根本不想要任何Esri基本地图,那么在最初创建地图时不要使用它。微修改此贴图服务示例
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源完全加载之后)。
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);
});
});发布于 2015-11-07 17:22:47
从相关的API文档中,centreAndZoom方法使用一个Point作为它的第一个参数。而且,你的缩放系数为零,看起来可能会引起问题。
点和非零缩放比例尺可能会带来更多的运气,如下所示:
map.centerAndZoom(new Point(51.1, 4.3), 0.5);该方法具有延迟返回类型,因此您可以提供一个回调,以便在方法调用完成后作出反应。
发布于 2018-05-29 18:17:40
也许是esri api错误,对我来说,它有时(但不总是)未能移动lng的地图中心,lat的缩放级别为18。
以下是我的工作方式:
建议:
map.centerAndZoom(new Point(lng, lat), 18);
替代方案:(有时,并不总是,它无法移动地图,也许ESRI需要修复Javascript v3.24的bug )
map.centerAt(new Point(lng, lat));
//or
// map.centerAt(new Point(lng, lat, new SpatialReference({wkid: 4326})));
map.setZoom(18);https://stackoverflow.com/questions/33585404
复制相似问题