Использование собственной базовой карты с ArcGIS API для Javascript?

12

Я пытаюсь сделать карту, используя Javascript API.

Я хочу использовать свою собственную базовую карту, но я не могу найти самый простой код для этого.

Я всегда вижу что-то вроде этого:

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

Но я не хочу использовать базовые карты ArcGIS.

Что такое код для создания картографического сервиса, на котором я размещаю свою базовую карту?

ianbroad
источник
1
Вы создали плитки из своей собственной базовой карты?
Mapperz

Ответы:

12

Справочник по API для карт класса говорит следующее:

Допустимы следующие варианты: «улицы», «спутник», «гибрид», «топо», «серый», «океаны», «национально-географический», «осм». Начиная с версии 3.3

Вместо этого вы должны просто определить новый сервисный слой ArcGIS Tiled Map и использовать его следующим образом:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);
Девдатта Тенгше
источник
1
@StephenLead setBasemap принимает только строковый параметр, поэтому он не будет работать!
digz6666
2
@ digz6666 ой, я думаю ты прав. Я удалю этот комментарий
Стивен Лид
2
@ StefhenLead Я нашел способ. Я отправлю как ответ. К сожалению, для ответа на этот вопрос требуется 10 очков репутации :)
digz6666
@ digz6666: Вам не нужно 10 повторений, чтобы создать ответ. См. Gis.stackexchange.com/help/privileges
Девдатта Тенгше
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;
digz6666
источник
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);
});
Джеймс Лаврук
источник