رفتن به محتوای اصلی
رهروکجا می‌روید؟

رهرو برای توسعه‌دهندگان

نقشه، مسیریابی و صفحهٔ مکان را با چند خط کد در سایت خود جاسازی کنید.

شروع سریع

اسکریپت را یک بار در صفحه بگذارید و هر جا نقشه می‌خواهید یک عنصر با data-rahro-map اضافه کنید. widget.js کمتر از ۵ کیلوبایت فشرده است، فقط iframe می‌سازد و تا وقتی عنصر به دید نیامده چیزی بار نمی‌کند.

<script src="https://map.rasadweb.ir/sdk/v1/widget.js" async></script>

<div data-rahro-map data-lat="35.6997" data-lon="51.3380" data-zoom="15"
     data-label="..." data-lang="fa" style="height:360px"></div>

<div data-rahro-place="x3f8k2m1q9" data-lang="fa" style="height:320px"></div>

جاسازی با iframe

سه صفحهٔ آماده: نقشه با سنجاق، مسیر بین دو نقطه و کارت مکان. زبان با ?lang= تعیین می‌شود؛ یک کد برای همهٔ صفحه‌های سایت شما کافی است.

<iframe src="https://map.rasadweb.ir/embed/map?ll=35.6997,51.338&z=15&lang=fa"
        width="100%" height="360" style="border:0" loading="lazy"></iframe>
<!-- https://map.rasadweb.ir/embed/directions?from=lat,lon&to=lat,lon&to_name=...&lang=fa -->
<!-- https://map.rasadweb.ir/embed/place/{id}?lang=fa -->

SDK ‏@rahro/maps

ساخت آدرس جاسازی، سوار کردن iframe و امضای آدرس تصویر ایستا. بدون npm هم از /sdk/v1/maps.mjs قابل import است؛ Web Componentها: <rahro-map>، <rahro-directions> و <rahro-place-card>.

<div id="map" style="height:360px"></div>
<script type="module">
  import { mountMap } from "https://map.rasadweb.ir/sdk/v1/maps.mjs";
  mountMap(document.getElementById("map"), { base: "https://map.rasadweb.ir", lat: 35.6997, lon: 51.338, zoom: 15, lang: "fa" });
</script>

<!-- web components (after widget.js) -->
<rahro-map lat="35.6997" lon="51.338" zoom="15" lang="fa"></rahro-map>
<rahro-directions to-lat="35.7" to-lon="51.4" to-name="..." lang="fa"></rahro-directions>
<rahro-place-card place="x3f8k2m1q9" lang="fa"></rahro-place-card>

کلیدهای API

برای جاسازی در مرورگر کلید publishable (pk_) و برای سرور و امضای تصویر ایستا کلید secret (sk_) بسازید. کلید کامل فقط یک بار نمایش داده می‌شود.

Origin را می‌توان جعل کرد؛ محافظ اصلی کلید publishable سهمیه و محدودیت نرخ است. کلید secret را فقط روی سرور نگه دارید.

تصویر ایستای نقشه

GET /v1/static/map با key، skid (شناسهٔ یکی از کلیدهای secret شما) و sig. امضا HMAC-SHA256 به‌صورت base64url روی رشتهٔ پرس‌وجوی مرتب‌شده بدون sig است و کلید امضا، هش SHA-256 (hex) کلید secret شماست؛ خود کلید secret هرگز در آدرس نمی‌آید. امضا را فقط روی سرور بسازید.

فعلاً پاسخ یک تصویر SVG ساده است (شبکه، سنجاق، برچسب و مختصات)، نه کاشی‌های واقعی نقشه؛ رندر واقعی با tileserver-gl بعداً اضافه می‌شود و آدرس و امضا تغییر نمی‌کند.

// Node 18+ — sign on your server, never in the browser.
import { createHash, createHmac } from "node:crypto";

const secret = createHash("sha256").update(process.env.RAHRO_SECRET_KEY).digest("hex");
const query = new URLSearchParams({
  ll: "35.6997,51.338", z: "15", w: "600", h: "400",
  key: "pk_...",               // your publishable (or secret) key
  skid: "<secret key id>",     // id of the secret key, shown on the keys page
}).toString();
const canonical = query.split("&").sort().join("&");
const sig = createHmac("sha256", secret).update(canonical).digest("base64url");
const url = `https://map.rasadweb.ir/v1/static/map?${query}&sig=${sig}`;

oEmbed

صفحه‌های مکان لینک کشف oEmbed دارند؛ ابزارهایی مثل وردپرس با چسباندن آدرس صفحه، کارت مکان را خودکار جاسازی می‌کنند. نقطهٔ دسترسی: GET /oembed?url=

GET https://map.rasadweb.ir/oembed?url=https%3A%2F%2Fmap.rasadweb.ir%2Fplace%2Fx3f8k2m1q9&maxwidth=600