مستندات ادغام و راهنمای API
راهنمای جامع، سریع و خودکفا برای توسعهدهندگان و Agentهای هوش مصنوعی جهت پیادهسازی و استفاده از نقشه وکتور ایران با استایل فارسی.
⚡ ۰. راهاندازی فوقسریع در ۱۰ ثانیه (AI & Web)
کد زیر کامل و بدون نیاز به هیچ تنظیم اضافه است. برای هر پروژه وب، این قطعه کد نقشه را به صورت ریسپانسیو و با فونت وزیرمتن فارسی بارگذاری میکند:
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>نقشه نتزو</title>
<link href="https://unpkg.com/maplibre-gl@4.7.1/dist/maplibre-gl.css" rel="stylesheet" />
<style>html, body, #map { margin: 0; padding: 0; width: 100%; height: 100%; }</style>
</head>
<body>
<div id="map"></div>
<script src="https://unpkg.com/maplibre-gl@4.7.1/dist/maplibre-gl.js"></script>
<script>
// ۱. فعالسازی پلاگین اجباری RTL برای اتصال حروف فارسی
maplibregl.setRTLTextPlugin(
'https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.2.3/mapbox-gl-rtl-text.min.js',
null,
true
);
// ۲. ساخت شیء نقشه با استایل پروداکشن نتزو
const map = new maplibregl.Map({
container: 'map',
style: 'https://map.netzo.ir/styles/iran-persian.json',
center: [53.6880, 32.4279], // مرکز جغرافیایی ایران [lng, lat]
zoom: 5.5,
minZoom: 4,
maxZoom: 18
});
// ۳. افزودن کنترلهای بزرگنمایی و قطبنما
map.addControl(new maplibregl.NavigationControl(), 'top-left');
</script>
</body>
</html>
<!DOCTYPE html>
<html lang="fa" dir="rtl">
<head>
<meta charset="UTF-8" />
<title>نقشه رستر نتزو با Leaflet</title>
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" />
<style>html, body, #map { margin: 0; padding: 0; width: 100%; height: 100%; }</style>
</head>
<body>
<div id="map"></div>
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js"></script>
<script>
const map = L.map('map').setView([32.4279, 53.6880], 6);
// لود تایلهای رستر PNG نتزو (XYZ Tile Layer)
L.tileLayer('https://map.netzo.ir/raster/iran/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: '© Netzo Map | OpenStreetMap contributors'
}).addTo(map);
L.marker([35.6892, 51.3890]).addTo(map).bindPopup('تهران').openPopup();
</script>
</body>
</html>
new maplibregl.Map() حتماً متد maplibregl.setRTLTextPlugin(...) را صدا بزنید؛ در غیر این صورت حروف فارسی به صورت جدا از هم و معکوس رندر میشوند. (در کتابخانه Leaflet نیازی به این مرحله نیست زیرا متنها از قبل روی سرور رندر شدهاند).
🗺️ پیشنمایش زنده در همین صفحه
نمای زنده از استایل وکتور سرور پروداکشن نتزو با تایپوگرافی فارسی وزیرمتن:
🌐 اندپوینتهای عمومی سرور
تمامی درخواستها دارای هدر Access-Control-Allow-Origin: * بوده و بدون محدودیت مبدا در مرورگر قابل استفاده هستند.
| سرویس | متد | آدرس (URL) | توضیحات |
|---|---|---|---|
| استایل MapLibre | GET |
https://map.netzo.ir/styles/iran-persian.json |
استایل کامل وکتور با لایههای رنگی و فونت فارسی |
| تایلهای وکتور | GET |
https://map.netzo.ir/tiles/iran/{z}/{x}/{y} |
تایلهای فشرده PBF از آرشیو PMTiles ایران (MapLibre GL) |
| تایلهای رستر (XYZ) | GET |
https://map.netzo.ir/raster/iran/{z}/{x}/{y}.png |
تایلهای استاندارد تصویری PNG سازگار با Leaflet، OpenLayers و GIS |
| تصویر ایستا (Static Map) | GET |
https://map.netzo.ir/style/iran-persian/static/{lon},{lat},{zoom}/{w}x{h}.png |
تولید آنی تصویر ثابت از نقشه با مختصات و ابعاد دلخواه |
| گلیف فونتها | GET |
https://map.netzo.ir/fonts/{font}/{range}.pbf |
فونت وزیرمتن تبدیلشده به SDF برای رندر وبجیال |
| اسپرایت آیکونها | GET |
https://map.netzo.ir/sprites/sprite.json |
اطلس آیکونهای POI و علائم جادهای |
| جستجو / ژئوکدینگ | GET |
https://map.netzo.ir/search?q={query} |
جستجوی نام شهرها، خیابانها و مکانهای ایران |
| آدرسیابی معکوس | GET |
https://map.netzo.ir/api/reverse-geocode?lat={lat}&lng={lng} |
تبدیل مختصات جغرافیایی به آدرس ساختیافته فارسی |
| بررسی سلامت | GET |
https://map.netzo.ir/ping |
پاسخ: pong |
🔍 وبسرویس جستجو و ژئوکدینگ (/search)
پشتیبانی از جستجوی ترکیبی (نام شهر + خیابان مانند فسا خیابان فیاض بخش) و اولویتبندی بر اساس فاصله با ارسال مختصات مرکز نقشه (lat, lon):
تست زنده اندپوینت جستجو:
async function searchPlace(query, mapCenter = null) {
const params = new URLSearchParams({ q: query, lang: 'fa', limit: '7' });
if (mapCenter) {
params.append('lat', mapCenter.lat.toFixed(5));
params.append('lon', mapCenter.lng.toFixed(5));
}
const res = await fetch(`https://map.netzo.ir/search?${params}`);
const data = await res.json();
// data.features شامل نام، display_name، شهر، استان، نوع و فاصله است
return data.features;
}
📍 وبسرویس آدرسیابی معکوس (/api/reverse-geocode)
تبدیل مختصات (عرض و طول جغرافیایی) به آدرس ساختیافته استاندارد، شامل نام خیابان، محله، شهر و استان:
تست زنده آدرسیابی معکوس:
async function reverseGeocode(latitude, longitude) {
const url = `https://map.netzo.ir/api/reverse-geocode?lat=${latitude}&lng=${longitude}`;
const res = await fetch(url);
if (!res.ok) throw new Error('خطا در دریافت آدرس');
return await res.json();
}
📌 نشانهگذاری و کنترل دوربین نقشه
کنترل مارکرها در سمت کلاینت با متدهای MapLibre GL JS انجام میشود:
// ۱. افزودن مارکر قرمز روی تهران (فرمت همیشه: [طول_جغرافیایی, عرض_جغرافیایی])
const marker = new maplibregl.Marker({ color: '#e53e3e' })
.setLngLat([51.3890, 35.6892])
.setPopup(new maplibregl.Popup({ offset: 25 }).setText('تهران - برج میلاد'))
.addTo(map);
// ۲. انیمیشن پرواز دوربین به مختصات دلخواه
map.flyTo({
center: [51.3890, 35.6892],
zoom: 14,
speed: 1.4
});
// ۳. برازش نقشه روی محدوده کل ایران
map.fitBounds([[44.03, 25.06], [63.33, 39.78]], { padding: 50 });
⚛️ کامپوننت آماده React / Next.js
import React, { useEffect, useRef } from 'react';
import maplibregl from 'maplibre-gl';
import 'maplibre-gl/dist/maplibre-gl.css';
export function NetzoMap({ center = [53.6880, 32.4279], zoom = 5.5 }) {
const mapContainer = useRef(null);
useEffect(() => {
maplibregl.setRTLTextPlugin(
'https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.2.3/mapbox-gl-rtl-text.min.js',
null,
true
);
const map = new maplibregl.Map({
container: mapContainer.current,
style: 'https://map.netzo.ir/styles/iran-persian.json',
center,
zoom
});
return () => map.remove();
}, []);
return <div ref={mapContainer} style={{ width: '100%', height: '500px' }} />;
}
📐 مرجع مختصات شهرهای اصلی ایران
| شهر | طول جغرافیایی (Longitude) | عرض جغرافیایی (Latitude) | آرایه مختصات [lng, lat] |
|---|---|---|---|
| تهران | 51.3890 | 35.6892 | [51.3890, 35.6892] |
| اصفهان | 51.6674 | 32.6546 | [51.6674, 32.6546] |
| مشهد | 59.6042 | 36.3132 | [59.6042, 36.3132] |
| شیراز | 52.5311 | 29.5918 | [52.5311, 29.5918] |
| تبریز | 46.2919 | 38.0800 | [46.2919, 38.0800] |