کامپوننت
<Control />
ارائه دهنده
کنترل نقشه
است که برای قرار یافتن یک کنترل یا element
خاص بروی
نقشه استفاده میشود و به عنوان یک child
درون کامپوننت
والد خود که
<Parsimap />
است، قرار یافته و یا به صورت مستقل یا parentless
با
تعیین mapId
مربوط به نقشه مورد نظر، بکار گرفته
میشود. کنترلها اغلب با نقشه تعامل داشته و ارتباط برقرار میکنند.
کنترل نقشه برای افزوده شدن به نقشه نیاز به تعیین گزینههای
html
و position
دارد. بوسیله اعمال
گزینهها میتوان
موقعیت
کنترل روی نقشه را تعیین نمود. و برای تعامل با آن، لازم است از
گزینهها و استایل مدنظر این کنترل با توجه به نیاز، استفاده نمود.
import React, { Component } from 'react';
import { Parsimap, Control } from 'react-parsimap';
// Set API Key via static `setKey` method of imported `Parsimap` class.
Parsimap.setKey('API_KEY');
export default class App extends Component {
// Using `Control` through define `html` option.
render() {
return (
<Parsimap
id="map"
height="100%"
center={{ lat: 35.7575, lng: 51.41 }}
>
<Control
html="Control content..."
options={{ position: 'right-middle' }}
/>
</Parsimap>
);
}
}
محتوای کنترل میتواند شامل یک رشته متنی، رشته به صورت
html
، یک element
ایجاد شده و یا یک
کامپوننت باشد. که به منظور استفاده از یک نوع محتوا نیاز به قرار
دادن گزینه html
در کامپوننت
<Control />
است. در حالت دیگر میتوان به صورت مستقیم نوع محتوا را به عنوان
child
درون کنترل نقشه قرار داد و دیگر نیازی به
استفاده از گزینه html
نخواهد بود.
import React, { Component } from 'react';
import { Parsimap, Control } from 'react-parsimap';
// Set API Key via static `setKey` method of imported `Parsimap` class.
Parsimap.setKey('API_KEY');
// Sample style for control container.
const controlStyle = {
direction: 'ltr',
background: '#fff',
padding: '5px',
outline: '1px solid #ccc',
};
// `TodoList` component is sample component for render into `Control`
// component, often interacted with the map.
function TodoList() {
return (
<div style={controlStyle}>
<b>Todo List</b>
<br />
<input type="checkbox" id="check-tehran" />
<label htmlFor="check-tehran">Check Tehran</label>
<br />
<input type="checkbox" id="show-isfahan" />
<label htmlFor="show-isfahan">Show Isfahan</label>
<br />
<input type="checkbox" id="search-mashhad" />
<label htmlFor="search-mashhad">Search Mashhad</label>
</div>
);
}
export default class App extends Component {
// Using `Control` through define `html` option as html string, html
// element or using a component or text as child of this component.
render() {
return (
<Parsimap
id="map"
height="100%"
center={{ lat: 35.7575, lng: 51.41 }}
>
{/* Using through a component. */}
<Control options={{ position: 'left-middle' }}>
<TodoList />
</Control>
{/* Using through `html` option of `Control` component.*/}
<Control
html="Something about map..."
options={{ position: 'left-bottom' }}
/>
</Parsimap>
);
}
}
کامپوننت
<TodoList />
درون کنترل نقشه استفاده شده است.
کنترل نقشه میتواند به صورت مستقل نیز بکارگرفته شود. در این حالت
<Control />
خارج از والد خود که
<Parsimap />
است، قرار یافته و mapId
مقدار
شناسه نقشه
که در
<Parsimap />
به
عنوان id
تعیین شده است قرار مییابد، با این کار مشخص
میشود که نقشه مربوط به آن چه است. در کنترل نقشه که به صورت مستقل
استفاده شده است با هر تغییر در کامپوننت که منجر به آپدیت آن شود،
برای نمونه تغییر state
که پس از آن تابع
render
یا خروجی کامپوننت صدا زده میشود، کنترل نقشه
مجدداً ایجاد میگردد. ولی زمانی که کنترل نقشه داخل والد خود قرار
یابد تنها در اولین بار و حین ایجاد شدن نقشه بروی نقشه ایجاد
میگردد. مستقل بودن
<Control />
این
امکان را فراهم میآورد تا به صورت مکرر log
های مربوط
به فعالیت روی نقشه را بروی نقشه نمایش داده و یا هنگامی که کنترل
روی نقشه باید حذف شود، مجدداً با آپدیت شدن کامپوننت اصلی که نقشه
در آن است کنترل حذف شده را بروی نقشه با محتوای جدیدی قرار داد.
import React, { Component } from 'react';
import { Parsimap, Control } from 'react-parsimap';
// Set API Key via static `setKey` method of imported `Parsimap` class.
Parsimap.setKey('API_KEY');
// Sample style for control container.
const controlStyle = {
direction: 'ltr',
background: '#fff',
padding: '5px',
outline: '1px solid #ccc',
};
// `LastDateNow` component is sample component for render into `Control`
// component, often interacted with the map.
function LastDateNow() {
return (
<div style={controlStyle}>
<b>Last Date Now:</b> {Date.now()}
</div>
);
}
export default class App extends Component {
// Using `Control` through a component outside Parsimap component as parent
// (parentless) and mapId must define as target `Parsimap` id. By changing
// the "state" and updating the component, create control over the map.
// Usage can include the display of logs and the last clicked points, used
// as controls that should be deleted and re-created.
render() {
return (
<div>
<Parsimap
id="map"
height="100%"
center={{ lat: 35.7575, lng: 51.41 }}
/>
<Control mapId="map" options={{ position: 'left-middle' }}>
<LastDateNow />
</Control>
</div>
);
}
}
بکارگیری کامپوننت نیازمند وابستگیهایی است که به طور کامل در بخش نصب و راهاندازی شرح داده شده است. همچنین در بخش نحوه صحیح بکارگیری درصد میتوان اطلاعاتی کاملی را جهت تعیین ارتفاع نقشه کسب نمود.