پرش به محتوای اصلی
Vue Neshan Mapsراهنمای توسعه‌دهندگان

متدها و دسترسی بومی

دوربین را کنترل کنید، کادر را تنظیم کنید و به موتور بومی دسترسی بگیرید.

۳ دقیقه مطالعهVue 3 / Nuxt 4همراه مثال زنده
مطالب این صفحهکنترل نقشه از برنامهیکپارچه‌سازیدسترسی به موتور بومیاتصال Nuxt و ثبت سراسریمهاجرت از نسخهٔ ۱
مثال تعاملیMapLibre

اجرا روی نقشهٔ واقعی نشان

کلید وب با مجوز دامنه وارد کنید. هندسه نمونه است؛ نقشهٔ پایه واقعی است.

دامنهٔ sajadjanat.github.io را مجاز کنید. کلید فقط در حافظه می‌ماند و وارد کد کپی‌شده نمی‌شود.

‏کنترل نقشه از برنامه#

‏از ref کامپوننت مطابق نمونهٔ کامل استفاده کنید. دکمه‌ها را تا رویداد ready غیرفعال نگه دارید و در destroy وضعیت آمادگی را پاک کنید.

هدف روش
‏نمایش همهٔ مارکرها fitToMarkers() یا prop واکنش‌پذیر fitMarkers
‏حرکت به نقطه flyTo([latitude, longitude], zoom)
‏نمایش محدوده fitBounds(bounds, options) با ترتیب مختصات بومی موتور
‏اصلاح اندازه پس از بازشدن پنل پنهان invalidateSize()؛ تغییر اندازهٔ معمول خودکار است
‏راه‌اندازی مجدد retry() با خروجی Promise
‏درخواست موقعیت دستگاه locate({ setView: true, maxZoom: 16 })

‏موقعیت را پس از اقدام مشخص کاربر درخواست کنید. HTTPS یا localhost و اجازهٔ مرورگر لازم است. رویدادهای location-found و location-error را مدیریت کنید؛ همهٔ دستگاه‌ها قادر به ارسال موقعیت نیستند. رویداد ready موفقیت راه‌اندازی است و موفقیت مجوز همهٔ کاشی‌ها را تضمین نمی‌کند.

‏یکپارچه‌سازی#

‏دسترسی به موتور بومی#

‏برای نگه‌داشتن ref بومی، useNeshanMapLibre را استفاده و هر دو handler چرخهٔ عمر را متصل کنید. کامپوننت نقشه را آزاد می‌کند و composable ارجاع خود را پاک می‌کند. API بومی MapLibre بر خلاف متد عمومی flyTo کامپوننت، طول جغرافیایی را اول می‌گیرد.

vue
<script setup lang="ts">
import { NeshanMapLibre, useNeshanMapLibre } from 'vue-neshan-maps'
import 'vue-neshan-maps/style.css'
const webKey = import.meta.env.VITE_NESHAN_WEB_KEY
const { map, onReady, onDestroy } = useNeshanMapLibre()
function go() {
  // Native MapLibre coordinates are LONGITUDE first.
  map.value?.flyTo({ center: [51.338, 35.6997], zoom: 15 })
}
</script>
<template>
  <button :disabled="!map" @click="go">Azadi Square</button>
  <NeshanMapLibre :api-key="webKey" @ready="onReady" @destroy="onDestroy" />
</template>

‏برای Leaflet از useNeshanMap استفاده کنید؛ مقدار ready برابر { map, L } است. در MapLibre این مقدار { map, maplibre } است. API و افزونهٔ بومی دو موتور یکسان نیستند. برای تغییر options مخصوص سازنده، با :key کامپوننت را دوباره mount کنید.

‏اتصال Nuxt و ثبت سراسری#

‏واردکردن بسته در SSR ایمن است و موتور پس از mount راه‌اندازی می‌شود. CSS را سراسری در تنظیمات Nuxt وارد کنید؛ اگر اتصال اطراف نقشه نیاز دارد، از فایل .client.vue یا <ClientOnly> استفاده کنید. کلید وب را از تنظیمات عمومی و کلید سرویس را فقط از تنظیمات خصوصی سرور بخوانید.

ts
export default defineNuxtConfig({
  css: ['vue-neshan-maps/style.css'],
  runtimeConfig: { public: { neshanWebKey: '' } },
})

‏متغیر NUXT_PUBLIC_NESHAN_WEB_KEY را در محیط استقرار تنظیم کنید. مثال Nuxt و افزونه کد کامل اتصال را دارد. واردکردن محلی ساده است؛ در صورت نیاز app.use(NeshanMapPlugin) هر دو کامپوننت را سراسری ثبت می‌کند.

‏مهاجرت از نسخهٔ ۱#

‏نسخهٔ ۲ برای Vue 3.5.43 به بعد است و واردکردن CSS ضروری است. Vue وابستگی peer است. اسکریپت UMD قدیمی را با import بسته جایگزین کنید. در Leaflet ویژگی‌های options.key، options.center و رویدادهای latitude و longitude حفظ شده‌اند؛ برای کد جدید apiKey و دو مدل را ترجیح دهید. دادهٔ شکل‌ها و مارکرها قابل استفاده است، ولی تنظیمات مارکر بومی هنگام تغییر موتور باید تطبیق یابد. نصب‌های قدیمی خودکار تغییر نمی‌کنند.

کتابخانهٔ مستقل جامعهٔ توسعه‌دهندگان؛ سرویس و انتساب نقشه متعلق به نشان و OpenStreetMap است. · Sajad Janat · MIT