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

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

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

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

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

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

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

ธีมแผนที่

คุณสามารถรับชิ้นส่วนแผนที่สำหรับธีมแผนที่ต่อไปนี้

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

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

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

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

ตัวอย่างเช่น เมืองส่วนใหญ่มีภาพที่ระดับการซูม 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 API
maxZoomRect
มีอาร์เรย์ของสี่เหลี่ยมผืนผ้าล้อมรอบที่ซ้อนทับกับวิวพอร์ตปัจจุบัน นอกจากนี้ยังมีระดับการซูมสูงสุดที่ใช้ได้ภายในสี่เหลี่ยมผืนผ้าแต่ละรูปด้วย

ฟังก์ชันพิกัดแผนที่ย่อย

เครื่องมือ (ฟังก์ชันง่ายๆ) มีให้บริการในภาษาโปรแกรมส่วนใหญ่เพื่อแปลงจากคู่ละติจูด/ลองจิจูดเป็นพิกัดแผนที่ย่อยที่ระดับการซูมที่เฉพาะเจาะจง ลองดูตัวอย่างโค้ด 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
  };
}