راهنمای API تایلهای Bing سرویس میمپس
دسترسی سریع و پایدار به تایلهای Bing Maps با کش خودکار و محدودیت جغرافیایی ایران
دسترسی به تایلهای Bing از طریق میمپس
سرویس میمپس تایلهای Bing Maps را با کش خودکار و محدودیت جغرافیایی به ایران ارائه میدهد
چرا API Bing میمپس؟
- 🇮🇷 محدود به ایران: تایلها فقط برای محدوده ایران از Bing دریافت میشوند؛ خارج از ایران تایل سفید بدون درخواست به سرور
- ⚡ سرعت با کش: تایلهای یکبار دریافتشده در کش ذخیره و در درخواستهای بعدی از سرور داخلی سرو میشوند
- 📦 کاهش درخواست به Bing: پس از کش شدن، دیگر نیازی به درخواست به سرورهای Bing نیست
- 🔒 کلید اختیاری: میتوانید با تنظیم BING_MAPS_KEY از Bing Maps Portal استفاده رسمی کنید
مزایای سرویس
- ✅ سرور داخل کشور: سرو تایل از اینترنت داخلی
- ✅ کش خودکار: ذخیره تایلها و بازگردانی در درخواستهای بعدی
- ✅ لایههای جاده، ماهواره و ترکیبی: سازگار با استاندارد XYZ
- ✅ پشتیبانی CORS: استفاده مستقیم از مرورگر و فریمورکهای وب
ویژگیهای کلیدی
کش، محدودیت ایران و سازگاری با کتابخانههای نقشه
⚡ کش و سرعت
تایلهای داخل ایران یکبار از Bing دریافت و در کش ذخیره میشوند. درخواستهای بعدی همان تایل از کش پاسخ داده میشوند و به Bing ارسال نمیشوند.
🇮🇷 محدودیت ایران
فقط تایلهایی که با محدوده جغرافیایی ایران تلاقی دارند از Bing گرفته میشوند. برای نواحی خارج از ایران یک تایل کاملاً سفید برگردانده میشود و هیچ درخواستی به Bing ارسال نمیشود.
🗺️ لایههای Bing
سه لایه در دسترس: road (نقشه جاده)، aerial (ماهواره)، hybrid (ترکیب ماهواره و برچسبها). زوم از ۱ تا ۲۳.
💡 سازگاری
URL به صورت استاندارد XYZ ({z}/{x}/{y}) است و با Leaflet، OpenLayers و سایر کتابخانههای نقشه سازگار است.
نقطه پایانی API
آدرس و پارامترهای API تایلهای Bing
نقطه پایانی دریافت تایل
https://memaps.ir/api/bing/{layer}/{z}/{x}/{y}.{ext}Method:
GETContent-Type:
image/png (لایه road) یا image/jpeg (لایههای aerial و hybrid)
پارامترهای URL:
| پارامتر | توضیح | مثال |
|---|---|---|
{layer} |
نوع لایه: road، aerial، hybrid | road |
{z} |
سطح زوم (۱ تا ۲۳) | 10 |
{x} |
مختصات X تایل | 512 |
{y} |
مختصات Y تایل | 512 |
{ext} |
پسوند: png (برای road) یا jpg/jpeg (برای aerial و hybrid) | png / jpg |
مثالهای URL:
// نقشه جاده
GET https://memaps.ir/api/bing/road/10/512/512.png
// ماهواره
GET https://memaps.ir/api/bing/aerial/10/512/512.jpg
// ترکیبی
GET https://memaps.ir/api/bing/hybrid/15/16384/16384.jpg
انواع لایههای Bing
سه لایه در دسترس با پسوند مناسب
🛣️ جاده (Road)
نقشه جاده با نام خیابانها و مکانها. پسوند: .png
.../bing/road/{z}/{x}/{y}.png
🛰️ ماهواره (Aerial)
تصاویر ماهوارهای. پسوند: .jpg
.../bing/aerial/{z}/{x}/{y}.jpg
🌐 ترکیبی (Hybrid)
ماهواره به همراه برچسب و نام مکانها. پسوند: .jpg
.../bing/hybrid/{z}/{x}/{y}.jpg
🇮🇷 محدودیت جغرافیایی به ایران
سرویس تایل Bing میمپس فقط برای محدوده ایران از سرورهای Bing درخواست میزند:
- اگر تایل با مرزهای ایران (تقریبی) تلاقی داشته باشد: از کش خوانده میشود یا در صورت نبود از Bing دریافت، کش و برگردانده میشود.
- اگر تایل خارج از ایران باشد: یک تایل کاملاً سفید (۲۵۶×۲۵۶ پیکسل) برگردانده میشود و هیچ درخواستی به سرورهای Bing ارسال نمیشود.
مثالهای عملی
استفاده با Leaflet و OpenLayers
Leaflet - نقشه جاده
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
</head>
<body>
<div id="map" style="height: 400px;"></div>
<script>
var map = L.map('map').setView([35.6892, 51.3890], 10);
L.tileLayer('https://memaps.ir/api/bing/road/{z}/{x}/{y}.png', {
attribution: '© Bing via Memaps.ir',
maxZoom: 23
}).addTo(map);
</script>
</body>
</html>
Leaflet - ماهواره و ترکیبی
var map = L.map('map').setView([35.6892, 51.3890], 10);
var roadLayer = L.tileLayer(
'https://memaps.ir/api/bing/road/{z}/{x}/{y}.png',
{ attribution: '© Bing via Memaps.ir', maxZoom: 23 }
);
var aerialLayer = L.tileLayer(
'https://memaps.ir/api/bing/aerial/{z}/{x}/{y}.jpg',
{ attribution: '© Bing via Memaps.ir', maxZoom: 23 }
);
var hybridLayer = L.tileLayer(
'https://memaps.ir/api/bing/hybrid/{z}/{x}/{y}.jpg',
{ attribution: '© Bing via Memaps.ir', maxZoom: 23 }
);
roadLayer.addTo(map);
L.control.layers({
'جاده': roadLayer,
'ماهواره': aerialLayer,
'ترکیبی': hybridLayer
}).addTo(map);
OpenLayers - Bing جاده
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/ol@v7.4.0/ol.css">
<script src="https://cdn.jsdelivr.net/npm/ol@v7.4.0/dist/ol.js"></script>
</head>
<body>
<div id="map" style="height: 400px;"></div>
<script>
var layer = new ol.layer.Tile({
source: new ol.source.XYZ({
url: 'https://memaps.ir/api/bing/road/{z}/{x}/{y}.png',
crossOrigin: 'anonymous'
})
});
var map = new ol.Map({
target: 'map',
layers: [layer],
view: new ol.View({
center: ol.proj.fromLonLat([51.3890, 35.6892]),
zoom: 10
})
});
</script>
</body>
</html>
JavaScript - دریافت مستقیم
async function getBingTile(layer, z, x, y, ext) {
ext = ext || (layer === 'road' ? 'png' : 'jpg');
const url = `https://memaps.ir/api/bing/${layer}/${z}/${x}/${y}.${ext}`;
const response = await fetch(url);
if (response.ok) return await response.blob();
return null;
}
getBingTile('road', 10, 512, 512); // PNG
getBingTile('aerial', 10, 512, 512); // JPG
سیستم کش خودکار
کش تایلهای داخل ایران؛ درخواستهای بعدی بدون تماس با Bing
نحوه کار
- بررسی محدوده ایران: اگر تایل خارج از ایران باشد، بلافاصله تایل سفید برگردانده میشود (بدون درخواست به Bing).
- بررسی کش: اگر تایل داخل ایران است، ابتدا وجود آن در کش بررسی میشود.
- بازگشت از کش: در صورت وجود در کش، همان فایل به کاربر برگردانده میشود.
- دریافت از Bing: در صورت نبود در کش، تایل از Bing دریافت، در کش ذخیره و به کاربر برگردانده میشود.
GET https://memaps.ir/api/bing/cache/infoخروجی شامل حجم کش، تعداد فایل و مسیر دایرکتوری کش است.
پشتیبانی از CORS
API تایلهای Bing میمپس از CORS پشتیبانی میکند و میتوانید مستقیماً از مرورگر استفاده کنید:
const img = document.createElement('img');
img.src = 'https://memaps.ir/api/bing/road/10/512/512.png';
img.crossOrigin = 'anonymous';
document.body.appendChild(img);