使用自己的底图和ArcGIS API for Java?


12

我正在尝试使用Javascript API制作地图。

我想使用自己的底图,但是找不到最简单的代码来做到这一点。

我总是看到这样的东西:

  function init() {
    map = new esri.Map("mapDiv", {
      basemap: "satellite",
      center: [-97.395, 37.537],
      zoom: 11
    });

但是我不想使用ArcGIS在线底图。

用于托管我的底图的地图服务的代码是什么?


1
您是否根据自己的底图创建了图块?
Mapperz

Answers:


12

Map类的API参考说明以下内容:

以下是有效选项:“街道”,“卫星”,“混合”,“地形”,“灰色”,“海洋”,“国家地理”,“ osm”。从3.3版本开始

相反,您应该只定义一个新的ArcGIS Tiled Map Service图层并按以下方式使用它:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);

1
@StephenLead setBasemap仅接受字符串参数,因此它将不起作用!
digz6666

2
@ digz6666糟糕,我认为您是对的。我将删除该评论
Stephen Lead

2
@StephenLead我找到了一种方法。我将发布答案。糟糕,它需要10个代表点才能回答,该死的:)
digz6666

@ digz6666:您不需要10个代表即可创建答案。参见gis.stackexchange.com/help/privileges
Devdatta Tengshe

5

对于arcgis javascript SDK 3.x版,您可以使用esri / basemaps类来声明和注册自定义底图并与您的地图一起使用:https : //developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

声明并注册自定义底图:

Basemaps.mybasemap = {
  title: 'My custom basemap',
  thumbnailUrl: 'https://js.arcgis.com/3.22/esri/images/basemap/satellite.jpg',
  //itemId: 'ulas',
  baseMapLayers: [
    { url: "https://services.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer" }
  ]
};

在地图构造函数中使用自定义底图:

var map = new Map("mapDiv", {
  basemap: "mybasemap",
  center: [-122.69, 45.52],
  zoom: 3
});

或者,您可以将自定义底图应用于现有地图:

map.setBasemap("mybasemap");

完整的代码示例:https : //codepen.io/digz6666/pen/wPwPbW

对于arcgis javascript SDK版本4.x,可以使用esri / Basemap。

声明基础地图图层和基础地图:

var baseLayer = new MapImageLayer({
  url: "https://services.arcgisonline.com/ArcGIS/rest/services/Specialty/DeLorme_World_Base_Map/MapServer"
});
var myBasemap = this.esri.basemap({
  baseLayers: [baseLayer],
  title: 'My custom basemap',
  id: 'my_custom_basemap'
});

将底图应用于现有地图对象:

map.basemap = myBasemap;

2

您不必指定内置底图。像这样将您的自定义底图添加为图层。

var map;
require(["esri/map", "esri/layers/ArcGISTiledMapServiceLayer", "dojo/domReady!"],
function (Map, ArcGISTiledMapServiceLayer ) {
    map = new Map("map", {                
        center: [-76.756, 40.241],
        zoom: 8
    });            
    var customBasemap = new ArcGISTiledMapServiceLayer(
    "http://services.arcgisonline.com/ArcGIS/rest/services/NatGeo_World_Map/MapServer");
    map.addLayer(customBasemap);
});
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.