No description
Find a file
2026-03-17 12:30:28 +00:00
bin add google earth and bing 2026-02-05 21:30:21 +00:00
config add google earth 2026-02-24 08:30:54 +00:00
docs add google earth 2026-03-17 12:30:28 +00:00
public add google earth 2026-03-17 12:30:28 +00:00
scripts add google earth 2026-03-17 12:30:28 +00:00
src add google earth 2026-03-17 12:30:28 +00:00
templates add google earth 2026-03-17 12:30:28 +00:00
.editorconfig add google earth and bing 2026-02-05 21:30:21 +00:00
.env add google earth 2026-03-17 12:30:28 +00:00
.env.dev add google earth and bing 2026-02-05 21:30:21 +00:00
.gitignore add google earth and bing 2026-02-05 21:30:21 +00:00
composer.json add google earth and bing 2026-02-05 21:30:21 +00:00
composer.lock add google earth and bing 2026-02-05 21:30:21 +00:00
create-search-user.sh add google earth and bing 2026-02-05 21:30:21 +00:00
package.json add google earth and bing 2026-02-05 21:30:21 +00:00
README.md add google earth 2026-03-17 12:30:28 +00:00
symfony.lock add google earth and bing 2026-02-05 21:30:21 +00:00

می‌مپس - سرویس نقشه رستری

سرویس نقشه می‌مپس ارائه‌دهنده نقشه‌های رستری با کیفیت بالا برای استفاده در پروژه‌های مختلف است.

ویژگی‌ها

  • رایگان و بدون محدودیت: استفاده کاملاً رایگان بدون نیاز به ثبت‌نام
  • کیفیت بالا: نقشه‌های با کیفیت بالا و جزئیات دقیق
  • سازگاری کامل: سازگار با تمام کتابخانه‌های نقشه موجود
  • سرعت بالا: بهینه‌سازی شده برای سرعت بارگذاری بالا
  • راست‌چین: پشتیبانی کامل از زبان فارسی و راست‌چین

تکنولوژی‌های استفاده شده

  • Backend: Symfony 6
  • Frontend: Twig Templates
  • CSS Framework: Tailwind CSS
  • Font: Vazirmatn (فونت فارسی)
  • Map Library: Leaflet.js
  • Server: Apache

نصب و راه‌اندازی

پیش‌نیازها

  • PHP 8.1 یا بالاتر
  • Composer
  • Apache/Nginx
  • MySQL/PostgreSQL (اختیاری)

مراحل نصب

  1. کلون کردن پروژه:
git clone https://github.com/your-username/memaps.git
cd memaps
  1. نصب وابستگی‌ها:
composer install
  1. تنظیم محیط:
cp .env.example .env
# ویرایش فایل .env و تنظیم متغیرهای محیطی
  1. ایجاد دیتابیس (اختیاری):
php bin/console doctrine:database:create
php bin/console doctrine:migrations:migrate
  1. تنظیم مجوزها:
chmod -R 777 var/
chmod -R 777 public/assets/

ساختار پروژه

memaps.ir/
├── config/                 # تنظیمات Symfony
├── public/                 # فایل‌های عمومی
│   ├── assets/            # فایل‌های استاتیک
│   │   ├── css/          # فایل‌های CSS
│   │   ├── fonts/        # فونت‌های فارسی
│   │   ├── images/       # تصاویر
│   │   └── leaflet/      # کتابخانه Leaflet
│   └── index.php         # نقطه ورود
├── src/                   # کدهای PHP
├── templates/             # قالب‌های Twig
│   ├── base.html.twig    # قالب پایه
│   └── main/             # قالب‌های صفحات اصلی
├── var/                   # فایل‌های موقت
└── vendor/                # وابستگی‌های Composer

استفاده از API

URL Pattern

https://memaps.ir/hots/{z}/{x}/{y}.png

پارامترها

  • {z}: سطح زوم (1 تا 18)
  • {x}: مختصات X تایل
  • {y}: مختصات Y تایل

API تایل Bing (با کش)

تایل‌های Bing از طریق API با کش سمت سرور ارائه می‌شوند. درخواست اول از Bing دریافت و کش می‌شود؛ درخواست‌های بعدی از کش پاسخ داده می‌شوند.

API مسیریابی ماتریسی (فقط محدوده ایران)

  • مسیر: POST /api/matrix

  • ورودی: origins و destinations (آرایه نقاط [lon, lat]). تمام نقاط باید در محدوده ایران باشند.

  • خروجی: ماتریس فاصله (متر) و زمان (ثانیه) بین مبدأها و مقصدها.

  • راهنما: docs/API_MATRIX.md. برای راه‌اندازی گراف مسیریابی از اسکریپت scripts/setup-routing-graph.sql استفاده کنید.

  • مسیر: https://memaps.ir/api/bing/{layer}/{z}/{x}/{y}.{ext}

  • لایه‌ها: road (نقشه جاده، پسوند .pngaerial (ماهواره)، hybrid (ترکیبی؛ پسوند .jpg برای aerial و hybrid)

  • زوم: ۱ تا ۲۳

نمونه با Leaflet:

L.tileLayer('https://memaps.ir/api/bing/road/{z}/{x}/{y}.png', { maxZoom: 23 }).addTo(map);
L.tileLayer('https://memaps.ir/api/bing/aerial/{z}/{x}/{y}.jpg', { maxZoom: 23 }).addTo(map);

اختیاری: برای استفاده رسمی از Bing می‌توانید در .env مقدار BING_MAPS_KEY را از Bing Maps Portal تنظیم کنید.

نمونه استفاده با 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([32.4279, 53.6880], 6);
        
        L.tileLayer('https://memaps.ir/hots/{z}/{x}/{y}.png', {
            attribution: '© می‌مپس',
            maxZoom: 18
        }).addTo(map);
    </script>
</body>
</html>

نمونه استفاده با OpenLayers

<!DOCTYPE html>
<html>
<head>
    <script src="https://cdn.jsdelivr.net/npm/ol@v7.4.0/dist/ol.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol@v7.4.0/ol.css">
</head>
<body>
    <div id="map" style="height: 400px;"></div>
    <script>
        var map = new ol.Map({
            target: 'map',
            layers: [
                new ol.layer.Tile({
                    source: new ol.source.XYZ({
                        url: 'https://memaps.ir/hots/{z}/{x}/{y}.png',
                        attributions: '© می‌مپس'
                    })
                })
            ],
            view: new ol.View({
                center: ol.proj.fromLonLat([53.6880, 32.4279]),
                zoom: 6
            })
        });
    </script>
</body>
</html>

صفحات موجود

  1. صفحه اصلی (/): معرفی سرویس و نمایش نقشه تعاملی
  2. راهنمای استفاده (/usage): مستندات کامل و نمونه‌های کاربردی

ویژگی‌های طراحی

  • طراحی واکنش‌گرا: سازگار با تمام دستگاه‌ها
  • راست‌چین: پشتیبانی کامل از زبان فارسی
  • فونت فارسی: استفاده از فونت وزیرمتن
  • رنگ‌بندی مدرن: استفاده از رنگ‌های جذاب و هماهنگ
  • انیمیشن‌های نرم: تجربه کاربری بهتر

مشارکت

برای مشارکت در پروژه:

  1. پروژه را Fork کنید
  2. یک شاخه جدید ایجاد کنید (git checkout -b feature/amazing-feature)
  3. تغییرات خود را Commit کنید (git commit -m 'Add amazing feature')
  4. به شاخه اصلی Push کنید (git push origin feature/amazing-feature)
  5. یک Pull Request ایجاد کنید

لایسنس

این پروژه تحت لایسنس MIT منتشر شده است. برای اطلاعات بیشتر فایل LICENSE را مطالعه کنید.

تماس با ما

تشکر

از تمام افرادی که در توسعه این پروژه مشارکت داشته‌اند تشکر می‌کنیم.