سلام . خیلی متشکرم که اینجا رو میخونید . مهندسی کامپیوتر خوندمم و سالهاست روی پلتفرم های مختلف کد نویسی میکنم ،از رباتیک تا بازی ... عاشق سخت افزار و کار کردن باهاشون هستم .
جست و جوی نقشه با استفاده از mapbox و ReactJS
سلام امیدوارم حالتون خوب باشه . گوگل مدتهاست که سرویس نقشه خودش (google map) رو پولی کرده . هر چند که هزینش زیاد نیست ولی برای ما سخت و نشدنیه . به همین خاطر تصمیم بر اینه که بدنبال سرویس های مشابه و صد البته رایگان باشیم . خب mapbox میتونه سرویس مورد نظر ما باشه . صد البته که سرویس های دیگه مثل leaflet و mapwize هم هستن اما mapbox یه چیز دیگست !
خب ما برای مقایسه سرویس ها اینجا نیستیم ، هدف ما استفاده ازشونه پس زیاد فرقی نداره که کدوم یکی رو انتخاب میکنیم . فقط این مهمه که قشنگ استفاده کنیم ازشون . خب بریم سراغ اصل مطلب . هدف ما راه اندازی یه سیستم سرچ ساده روی مپ هست که با استفاده از Reactjs روی پلتفرم وب قراره اجرا بشه ، هست . قدم اول رو برمیداریم . من الان دارم روی ویندوز و با استفاده از Visual Studio code این کار رو انجام میدم و بهتون پیشنهاد میکنم از همین ادیتور استفاده کنید . برای نصب ری اکت به صفحه ی گیت هابش میریم و خیلی راحت با نوشتن یک کامند در ترمینال ویژال استودیو ، ری اکت رو نصب میکنیم .
npx create-react-app mapbox-search
cd mapbox-search
npm start
حرکت اول ادیت کردن فایل app.js هست که میخوایم پروژمون رو در قالبش انجام بدیم .
import React, { Component } from 'react';
import './App.css';
class App extendeds Components {
render() {
return (
<div className="App">
<h1>جست و جوی نقشه </h1>
</div>
);
}
}
export default App;
خب فایل ما این شکلی میشه .
کار بعدی که باید انجام بدیم ثبت نام و دریافت access token از سایت مپ باکس هست که روال روتینی داره و به راحتی نصب میشه .
اول باید پکیج مپ باکس رو نصب کنیم . با استفاده از کامند پایین :
npm install mapbox-gl --save
بعد از پایان نصب اول آدرس فایل css رو توی فایل App.js قرار میدیم .
<link href='https://api.mapbox.com/mapbox-gl-js/v0.52.0/mapbox-gl.css' rel='stylesheet' />
خب خط پایین رو قبل از render اضافه کنیم :
import mapboxgl from 'mapbox-gl'
...
componentDidMount() {
mapboxgl.accessToken = '<توکن رو اینجا قرار بدید>';
var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/streets-v11'
});
}
...
<div id="map"></div>
خب تبریک میگم ما یه نقشه داریم .
یه مشکلی که ما داریم اینه که نقشه خوب ست نمیشه روی صفحه پس یه استایل اضافه میکنیم .
#map {
text-align : left;
}
خب بریم سراغ اضافه کردن قابلیت سرچ .
برای اینکه بخوایم سرچ رو اضافه کنیم برای پکیج mapbox-gl-geocoder
رو توی اپلیکیشنون نصب کنیم . برای این کار کامند زیر رو وارد میکنیم :
npm i @mapbox/mapbox-gl-geocoder
import MapboxGeocoder from '@mapbox/mapbox-gl-geocoder'
و تکه کد کنترل رو اضافه میکنیم .
map.addControl(new MapboxGeocoder({ accessToken: mapboxgl.accessToken }));
باز هم مشکل استایل داریم و تکه کد رو توی فایل استایل خودمون ذخیره میکنیم .
mapboxgl-control-container {
position: relative;
top:0
}
خب حالا نقشه داریم با قابلیت سرچ . البته باید استایلش رو بر اساس سلیقه ی خودتون درست کنین .
امیدوارم مورد استفاده قرار بگیره . لطفا نظراتتون رو برام بنویسید و همچنین میتونید پروژه رو از روی گیت هابم بردارید . موفق و پیروز باشید .
مطلبی دیگر از این انتشارات
تیم ریاکت دارن چیکار میکنن؟ (قسمت سوم)
مطلبی دیگر از این انتشارات
آیا واقعا عمر Redux به سر رسیده است؟
مطلبی دیگر از این انتشارات
کارهای تکراری, ممنوع! (قسمت ۱)