ภาพรวมการ์ด 2 มิติ

นักพัฒนาซอฟต์แวร์ในเขตเศรษฐกิจยุโรป (EEA)

ตัวอย่างแผนกลยุทธ์Map Tiles เป็นเพียงการแบ่งโลกออกเป็นตารางกริดที่มีการจัดทำดัชนี ซึ่งช่วยให้คุณเข้าถึงและใช้ข้อมูลแผนที่ได้อย่างมีประสิทธิภาพและแบบไดนามิก ในมาตราส่วนแผนที่หลายระดับ Map Tiles API ช่วยให้คุณเข้าถึง ชุดข้อมูลภูมิสารสนเทศเฉพาะเรื่องหลายชุด ซึ่งรวมถึงชุดข้อมูลที่ Google คัดสรรมา ดังนี้

  • Map Tiles ของแผนที่ถนนที่อิงตามข้อมูลภูมิประเทศแบบเวกเตอร์พร้อมสไตล์การทำแผนที่ของ Google

  • ภาพถ่ายออร์โธโฟโตกราฟีที่ถ่ายโดยกล้องทั้งจากดาวเทียมและเครื่องบิน ซึ่งให้ภาพจากบนลงล่าง (จุดเหนือศีรษะ) ของโลก

  • แผนที่เส้นชั้นความสูงแบบ Hillshade

Map Tiles แบบ 2 มิติทั้งหมดมีการอ้างอิงทางภูมิศาสตร์และจัดแนวให้ตรงกัน ระบบจะเลือก Map Tiles ตามขอบเขตทางภูมิศาสตร์ของวิวพอร์ตและระดับการซูม ระดับการซูมมีตั้งแต่ 0 (เพื่อดูโลกทั้งใบ) ถึง 22 (เพื่อดูถนนและบล็อก)

ธีมของแผนที่

คุณสามารถรับ Map Tiles สำหรับธีมของแผนที่ต่อไปนี้ได้

ธีมของแผนที่ คำอธิบาย
แผนที่ถนน ถนน อาคาร จุดที่น่าสนใจ และขอบเขตการปกครอง
ดาวเทียม ภาพถ่ายที่ถ่ายจากอวกาศ
ภูมิประเทศ แผนที่เส้นชั้นความสูงที่แสดงลักษณะทางธรรมชาติ เช่น พืชพรรณ

หากต้องการขอ Map Tiles จาก Map Tiles API คุณต้องขอ โทเค็นเซสชันก่อน โทเค็นเซสชันจะติดตามสถานะปัจจุบันของแผนที่และวิวพอร์ต เมื่อตั้งค่าโทเค็นเซสชัน คุณต้องตั้งค่า mapType ให้ตรงกับธีมของแผนที่ที่ต้องการ จากนั้นคุณต้องใส่โทเค็นของเซสชันในคำขอแต่ละรายการที่ส่งไปยัง Map Tiles API

คำขอข้อมูลวิวพอร์ต

วิวพอร์ตกำหนดขนาดของกล่องที่ล้อมรอบฉากโลก คำขอข้อมูลวิวพอร์ตจะแสดงรายละเอียดเกี่ยวกับ Map Tiles ที่ประกอบกันเป็นวิวพอร์ตปัจจุบัน เหตุผลที่คุณขอข้อมูลวิวพอร์ตก็คือเพื่อให้แน่ใจว่าคุณจะไม่ขอภาพที่ระดับการซูมที่ไม่มีอยู่

ตัวอย่างเช่น เมืองส่วนใหญ่มีภาพที่ระดับการซูม 22 แต่ไม่มีภาพของมหาสมุทรเนื่องจากจะแสดงเป็นสี่เหลี่ยมสีฟ้าที่ไม่มีฟีเจอร์

คำขอวิวพอร์ตเป็นคำขอ HTTPS GET ในรูปแบบต่อไปนี้

curl "https://tile.googleapis.com/tile/v1/viewport?session=YOUR_SESSION_TOKEN&key=YOUR_API_KEY&zoom=zoom&north=north&south=south&east=east&west=west"

คำขอจะมีช่องต่อไปนี้

zoom
ระดับการซูมของวิวพอร์ต
north, south, east, west
จุดเหนือสุด ใต้สุด ตะวันออกสุด และตะวันตกสุดในวิวพอร์ต ซึ่งแสดงเป็นองศา จุดเหนือและจุดใต้ต้องอยู่ในช่วง (-90,90) จุดตะวันออกและจุดตะวันตกต้องอยู่ในช่วง (-180, 180) หากต้องการแสดงขอบเขตที่ข้ามเส้นเมริเดียนตะวันตกและตะวันออก จุดตะวันตกอาจเป็นค่าบวก (เช่น 170) และจุดตะวันออกอาจเป็นค่าลบ (เช่น -170) ต้องระบุพารามิเตอร์ทั้งหมด

การตอบกลับข้อมูลวิวพอร์ต

การตอบกลับวิวพอร์ตจะบอกคุณว่าพื้นที่ใดมีภาพ และมีภาพที่ระดับการซูมใดบ้าง การตอบกลับข้อมูลวิวพอร์ตจะมีรูปแบบดังนี้

{
  "copyright": "Map data ©2023",
  "maxZoomRects": [
    {
      "maxZoom": 19,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 9,
      "north": 90,
      "south": -90,
      "east": 180,
      "west": -180
    },
    {
      "maxZoom": 14,
      "north": 84.375,
      "south": -84.375,
      "east": 180,
      "west": -180
    }, ...
  ]
}

เนื้อหาการตอบกลับจะมีช่องต่อไปนี้

copyright
มีสตริงการระบุแหล่งที่มาที่คุณต้องแสดงบนแผนที่เมื่อแสดง Map Tiles ของแผนที่ถนนและดาวเทียม ดูข้อมูลเพิ่มเติมได้ที่ นโยบาย Map Tiles API
maxZoomRect
มีอาร์เรย์ของสี่เหลี่ยมผืนผ้าขอบเขตที่ซ้อนทับกับวิวพอร์ตปัจจุบัน และยังมีระดับการซูมสูงสุดที่ใช้ได้ภายในสี่เหลี่ยมผืนผ้าแต่ละรูป

ฟังก์ชันพิกัด Map Tiles

เครื่องมือ (ฟังก์ชันอย่างง่าย) มีให้บริการในภาษาโปรแกรมส่วนใหญ่เพื่อแปลงจากคู่ละติจูด/ลองจิจูดเป็นพิกัดแผนที่ย่อยที่ระดับการซูมที่เฉพาะเจาะจง ลองดูตัวอย่างโค้ด JavaScript ต่อไปนี้ที่แปลงจาก latLng เป็นจุดก่อน แล้วจึงแปลงจากจุดเป็นพิกัดแผนที่ย่อย

var TILE_SIZE = 256;

function fromLatLngToPoint(latLng) {
  var mercator = -Math.log(Math.tan((0.25 + latLng.lat() / 360) * Math.PI));
  return {
    x: TILE_SIZE * (latLng.lng() / 360 + 0.5),
    y: TILE_SIZE / 2 * (1 +  mercator / Math.PI)
  };
}

function fromLatLngToTileCoord(latLng, zoom) {
  var point = fromLatLngToPoint(latLng);
  var scale = Math.pow(2, zoom);

  return {
    x: Math.floor(point.x * scale / TILE_SIZE),
    y: Math.floor(point.y * scale / TILE_SIZE),
    z: zoom
  };
}