@neshan-maps-platform/mapbox-gl-react 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,115 @@
1
+ <div dir="rtl">
2
+
3
+ # نسخه‌ی رسمی `@neshan-maps-platform/mapbox-gl` برای `ReactJS`
4
+
5
+ این پکیج، `wrapper` رسمی نشان برای `@neshan-maps-platform/mapbox-gl` جهت استفاده در پروژه‌های ساخته شده با `ReactJS` است.
6
+ به کمک این پکیج، شما به راحتی می‌توانید درون پروژه‌ی `ReactJS` خود، از `mapbox-gl`، با استایل‌های نقشه‌ی نشان، به همراه قابلیت نمایش ترافیک
7
+ و POIها، استفاده کنید.
8
+
9
+ ## Dependencies -- وابستگی‌ها
10
+
11
+ - `@neshan-maps-platform/mapbox-gl`: ورژن `1.0.10` یا بالاتر
12
+ - `@types/mapbox-gl`: ورژن `2.7.15` یا بالاتر
13
+ - `react`: ورژن `18.2.0` یا بالاتر
14
+ - `react-dom`: ورژن `18.2.0` یا بالاتر
15
+
16
+ ## Installation guide -- شیوه‌ی نصب
17
+
18
+ - با استفاده از `npm`:
19
+
20
+ `npm install @neshan-maps-platform/mapbox-gl-react`
21
+
22
+ - با استفاده از `yarn`:
23
+
24
+ `yarn add @neshan-maps-platform/mapbox-gl-react`
25
+
26
+ ## Usage -- شیوه‌ی استفاده
27
+
28
+ 1. ابتدا با ساخت حساب کاربری در [پلتفرم نقشه‌ی نشان](https://platform.neshan.org/)، یک API_KEY برای خود بسازید. توضیحات لازم در وبسایت پلتفرم نقشه‌ی نشان داده شده است.
29
+ 2. سپس، با استفاده از package managerای که دارید استفاده می‌کنید، این پکیج را در پروژه‌ی خود نصب کنید.
30
+ 3. بعد از نصب کردن پکیج در پروژه‌ی خود، می‌توانید با استفاده از کامپوننت `MapComponent`، از نقشه استفاده کنید:
31
+
32
+ <div dir="ltr">
33
+
34
+ ```jsx
35
+ // Your imports
36
+ import {MapComponent, MapTypes} from "@neshan-maps-platform/mapbox-gl-react";
37
+ import "@neshan-maps-platform/mapbox-gl-react/dist/style.css";
38
+
39
+ function App() {
40
+ // Your Code
41
+ return (
42
+ {/*Your Component Structure*/}
43
+ <MapComponent options={{mapKey: "YOUR_API_KEY", mapType: MapTypes.neshanRasterNight}}/>
44
+ {/*Your Component Structure*/}
45
+ );
46
+ }
47
+
48
+ export default App;
49
+ ```
50
+ </div>
51
+
52
+ در ادامه با هم پارامترهای ورودی این کامپوننت را بررسی می‌کنیم:
53
+
54
+ ## Component Props -- ورودی‌های کامپوننت
55
+
56
+ ### `options: MapboxComponentInputOptions (object)`
57
+
58
+ یک `object` است که شامل مقادیر ورودی مورد نیاز برای `mapbox-gl` است. تمامی `property`های زیر، اختیاری هستند و مقدار پیش‌فرض آنها نیز ذکر شده. **تنها ارائه‌ی `mapKey` برای کار کردن کامپوننت، اجباری است!**
59
+
60
+ - `mapKey`: از نوع `string` است. مقدار آن نشان دهنده‌ی API_KEYای که از وبسایت پلتفرم نشان دریافت می‌کنید، است. در صورتی که مقدار آن، درست نباشد، نمی‌توانید از کامپوننت استفاده کنید. همچنین در console، با اروری مبنی بر درست نبودن مقدار آن مواجه خواهی شد.
61
+ - `mapType`: از نوع `string` است. و نوع استایل نقشه را مشخص می‌کند. در حال حاضر، صرفا چهار استایل برای نقشه موجود است: `neshanVector`, `neshanVectorNight`, `neshanRaster`, `neshanRasterNight`.
62
+ برای مقدار دهی این `property`، می‌توانید از `MapTypes` که یک `enum` است و در همین پروژه موجود است، استفاده کنید.(به مثال بالا مراجعه کنید).
63
+ مقدار پیش‌فرض این `property` برابر `neshanVector` است.
64
+ - `poi`: از نوع `boolean` است. مشخص می‌کند که در ابتدا و بعد از لود شدن نقشه، poiها روی نقشه نمایش داده شوند یا نه.
65
+ مقدار پیش‌فرض آن برابر `false` است.
66
+ - `traffic`: از نوع `boolean` است. مشخص می‌کند که در ابتدا و بعد از لود شدن نقشه، لایه‌ی ترافیک فعال باشد یا خیر.
67
+ مقدار پیش‌فرض آن برابر `false` است.
68
+ - `isTouchPlatform` : از نوع `boolean` است. و نوع دستگاه(تاچ و موبایل یا دسکتاپ) را مشخص می‌کند. مقدار پیش‌فرض آن `false` است.
69
+ - `mapTypeControllerStatus`: از نوع `object` است. مشخص می‌کند که آیا کنترل لایه‌ها و استایل‌های نقشه نمایش داده شود یا خیر. و همچنین موقعیت آن را مشخص می‌کند:
70
+ <div dir="ltr">
71
+
72
+ ```js
73
+ interface mapTypeControllerStatus {
74
+ show: boolean,
75
+ position: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'
76
+ }
77
+ ```
78
+ </div>
79
+
80
+ مقدار پیش‌فرض `show` برابر `true` و مقدار پیش‌فرض `position` برابر `bottom-left` است. می‌توان هر یک از این دو `property` را overwrite کرد.
81
+
82
+ دیگر `property`های موجود در `options`، مربوط به خود `mapbox-gl` هستند. برای دیدن آنها به مستندات خود کتابخانه‌ی `mapbox-gl` مراجعه کنید.
83
+
84
+ *نکته: شما نمی‌توانید مقداری برای `property` تعیین کننده‌ی `container` پاس دهید.*
85
+ ### `mapSetter: (map: SDKMap) => void (optional)`
86
+
87
+ از نوع تابع است و صرفا یک ورودی می‌گیرد. پاس دادن آن، اختیاری است. این تابع برای دسترسی شما به instance ایجاد شده از کلاس Map است. بعد از ایجاد شدن Map، مقدار آن به عنوان ورودی به این تابع، پاس داده می‌شود.
88
+
89
+ ### `containerElementSetter: (el: HTMLDivElement) => void (optional)`
90
+
91
+ از نوع تابع است و صرفا یک ورودی می‌گیرد. پاس دادن آن، اختیاری است. این تابع برای دسترسی شما به elementای که Map در آن رندر می‌شود، است. بعد از ایجاد شدن Map و رندر شدن آن، خود containerElement به عنوان ورودی به این تابع، پاس داده می‌شود.
92
+
93
+ ### دیگر موارد
94
+
95
+ سه موردی که ذکر شد، `prop`هایی بودند که مستقیما در عملکرد نقشه نقش داشتند و یا با نقشه سروکار دارند. اما این کامپوننت، `prop`های دیگری نیز می‌پذیرد. شما می‌توانید همه‌ی `prop`هایی که یک `HTMLDivElement` قبول می‌کند را به کامپوننت پاس بدهید. همه‌ی این `prop`ها، به `container` نقشه پاس داده خواهند شد.
96
+
97
+ ### استفاده از کلاس‌های MapboxGL
98
+
99
+ همانطور که در بخش وابستگی‌ها مشاهده می‌شود، این کتابخانه از پکیج `@neshan-maps-platform/mapbox-gl` استفاده می‌کند. برای استفاده از دیگر کلاس‌ها و `property`های MapboxGL، مانند `Marker` و ...، باید آنها را از مسیر `@neshan-maps-platform/mapbox-gl`، در جایی که می‌خواهید، `import` کنید. مانند مثال زیر:
100
+ <div dir="ltr">
101
+
102
+ ```tsx
103
+ //...
104
+ import nmp_mapboxgl from '@neshan-maps-platform/mapbox-gl';
105
+
106
+ function MyComponent(...){
107
+ //Your code here
108
+ const marker = new nmp_mapboxgl.Marker(...);
109
+ return (...);
110
+ }
111
+
112
+ export default MyComponent
113
+ ```
114
+ </div>
115
+ </div>
@@ -0,0 +1,3 @@
1
+ import { MapComponentProps } from "../../Types";
2
+ declare function MapComponent(props: MapComponentProps): import("react/jsx-runtime").JSX.Element | null;
3
+ export default MapComponent;
@@ -0,0 +1,9 @@
1
+ import { HTMLAttributes } from "react";
2
+ import SDKMap from "@neshan-maps-platform/mapbox-gl/dist/src/core/Map";
3
+ import { MapBoxSKDOptionsModel } from "@neshan-maps-platform/mapbox-gl/dist/src/parameters/parameters";
4
+ export type MapboxComponentInputOptions = Omit<MapBoxSKDOptionsModel, 'container'>;
5
+ export interface MapComponentProps extends HTMLAttributes<HTMLDivElement> {
6
+ options: MapboxComponentInputOptions;
7
+ mapSetter?: (map: SDKMap) => void;
8
+ containerElementSetter?: (el: HTMLDivElement) => void;
9
+ }
@@ -0,0 +1 @@
1
+ export type { MapComponentProps, MapboxComponentInputOptions } from './Components/MapComponent/MapComponentProps.ts';
@@ -0,0 +1,7 @@
1
+ export { default as MapComponent } from './Components/MapComponent/MapComponent.tsx';
2
+ export declare enum MapTypes {
3
+ neshanVector = "neshanVector",
4
+ neshanVectorNight = "neshanVectorNight",
5
+ neshanRaster = "neshanRaster",
6
+ neshanRasterNight = "neshanRasterNight"
7
+ }