ใช้ basemap ของตัวเองกับ ArcGIS API สำหรับ Javascript?


12

ฉันพยายามสร้างแผนที่โดยใช้ Javascript API

ฉันต้องการใช้แผนที่ฐานของตัวเอง แต่ฉันไม่สามารถหารหัสที่ง่ายที่สุดในการทำเช่นนี้

ฉันมักจะเห็นสิ่งนี้:

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

แต่ฉันไม่ต้องการใช้ ArcGIS basemaps ออนไลน์

รหัสที่จะทำให้บริการแผนที่ฉันเป็นเจ้าภาพ basemap ของฉันคืออะไร


1
คุณเคยสร้างกระเบื้องจากแผนที่ฐานของคุณเองหรือ
Mapperz

คำตอบ:


12

การอ้างอิง APIสำหรับคลาสแผนที่ระบุดังต่อไปนี้:

ตัวเลือกที่ถูกต้องคือ: "ถนน", "ดาวเทียม", "ไฮบริด", "โทโป", "สีเทา", "มหาสมุทร", "ชาติทางภูมิศาสตร์", "osm" ตั้งแต่เวอร์ชัน 3.3

คุณควรเพียงแค่กำหนด ArcGIS Tiled Map Service Layer ใหม่และใช้ดังต่อไปนี้:

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 Reps เพื่อสร้างคำตอบ ดูgis.stackexchange.com/help/privileges
Devdatta Tengshe

5

สำหรับ arcgis javascript SDK เวอร์ชั่น 3.x คุณสามารถใช้คลาส esri / basemaps เพื่อประกาศและลงทะเบียน basemaps ที่กำหนดเองและใช้กับแผนที่ของคุณ: https://developers.arcgis.com/javascript/3/jsapi/esri.basemaps-amd.html

ประกาศและลงทะเบียน basemap ที่กำหนดเอง:

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);
});
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.