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