Menggunakan basemap sendiri dengan ArcGIS API untuk Javascript?

12

Saya mencoba membuat peta menggunakan Javascript API.

Saya ingin menggunakan basemap saya sendiri, tetapi saya tidak dapat menemukan kode paling sederhana untuk melakukan ini.

Saya selalu melihat sesuatu seperti ini:

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

Tetapi saya tidak ingin menggunakan basemaps online ArcGIS.

Apa kode untuk membuat layanan peta saya hosting basemap saya?

ianbroad
sumber
1
Sudahkah Anda membuat ubin dari basemap Anda sendiri?
Mapperz

Jawaban:

12

The Reference API untuk Kelas Peta mengatakan berikut:

Berikut ini adalah opsi yang valid: "jalan", "satelit", "hibrida", "topo", "abu-abu", "lautan", "nasional-geografis", "osm". Pada versi 3.3

Sebagai gantinya, Anda harus mendefinisikan layer layanan ArcGIS Tiled Map baru dan menggunakannya sebagai berikut:

var baseMapLayer = new esri.layers.ArcGISTiledMapServiceLayer("your URL");
map.addLayer(baseMapLayer);
Devdatta Tengshe
sumber
1
@StephenLead setBasemap hanya menerima parameter string, jadi tidak akan berfungsi!
digz6666
2
@ digz6666 oops, saya pikir Anda benar. Saya akan menghapus komentar itu
Stephen Lead
2
@StephenLead Saya menemukan cara. Saya akan memposting sebagai jawaban. Ups, diperlukan 10 poin rep untuk menjawab ini, sial :)
digz6666
@ digz6666: Anda seharusnya tidak perlu 10 Reps untuk membuat jawaban. Lihat gis.stackexchange.com/help/privileges
Devdatta Tengshe
5

Untuk arcgis javascript SDK versi 3.x Anda dapat menggunakan kelas esri / basemaps untuk mendeklarasikan dan mendaftarkan basemaps khusus dan digunakan dengan peta Anda: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

Nyatakan dan daftarkan basemap khusus:

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" }
  ]
};

Gunakan basemap khusus di konstruktor peta:

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

Atau Anda dapat menerapkan basemap khusus Anda ke peta yang ada:

map.setBasemap("mybasemap");

Contoh kode lengkap: https://codepen.io/digz6666/pen/wPwPbW

Untuk arcgis javascript SDK versi 4.x Anda dapat menggunakan esri / Basemap.

Nyatakan layer peta dasar dan peta dasar:

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'
});

Terapkan basemap ke objek peta yang ada:

map.basemap = myBasemap;
digz6666
sumber
2

Anda tidak harus menentukan basemap bawaan. Tambahkan basemap kustom Anda sebagai layer seperti itu.

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);
});
James Lawruk
sumber