اولین کاری که باید بکنبد اینه که کتابخانه GMAP.NET را از اینجا دانلود کنید. در فایل فشرده ای که دانلود میکنید 2 تا فایل DLL قرار گرفته که باید به پروژه اضافه کنید. بعد از اینکه یک پروژه ایجاد کردید در solution explorer قسمت reference کلیک راست کرده و گزینه add reference رو بزنید. در پنجره ای که باز میشه مسیر فایل های dll رو میدین و اوکی میکنید. یک بار که اینکار رو انجام بدین در پروژه های بعدی در لیست reference ها میمونه فقط کافیه که تیک بزنید و اضافه کنید.

قدم بعدی که باید انجام بشه اضافه کردن کامپوننت gmap control هست که کافیه فایل GMap.NET.WindowsForms.dll درگ کنید و در toolbox رها کنید. و یه راه هم اینکه رو toolbox کلیک راست کنید و گزینه choose item رو بزنید و سپس گزینه browse رو بزنید و مسیر فایل رو بهش بدین. بعد چک کنید که تیک GMAPControl زده باشه بعد اوکی کنید.

سپس میبینید که کنترل به toolbox شما اضافه شده

خب تا اینجا مراحل اضافه کردن فایل ها و کامپوننت ها تموم شد .
ایجاد نقشه در Window Form
خب گام بعدی که باید انجام بدید اینه که کامپوننت gmap control رو از tool box درگ کنید و رو ویندوز فرم رها کنید تا یک نمونه از آن ساخته شه. تنها چیزی کی شما میبینید یک مربع سفید با یک + قرمز رنگ وسطش.

. واسه راحتی کار ما تو properties اسم کامپوننت رو میذاریم gmap . وقتی کامپوننت رو انتخاب کردین تو پنجره properties ویژگی های اونو نمایش میده که با چند تایی که بیشتر کار داریم رو توضیح میدم.

CanDragMap
وقتی این گزینه true باشه کاربر این اجازه رو داره که نقشه رو جا به جا کنه و به قسمت هایی که دوست داره نقشه رو درگ کنه. (بهتره که این قسمت true باقی بمونه )MarkersEnabled
زمانی که این خاصیت true باشه علامت هایی (Marker) که رو نقشه باشه رو نشون میده. البته بهتره تا آموزش های بعدی که ایجاد مارکر رو توضیح میدیم این قسمت true بمونه.MinZoom , MaxZoom ,Zoom
برای نقشه گوگل بهترین تنظیمات اینه که حداقل زوم 0 باشه و حداکثر رو هم رو 18 تنظیم کنیم. و خود Zoom رو میتونید رو 5 ست کنید که نمای کلی از کشور رو نشون میده. البته میتونید واسه شهر ها مقدار زوم رو زیاد تر کنید ، مثلا 14.خب حالا نوبت لود کردن فرم میرسه. ما میخوایم نقشه تو فرم لود اجرا بشه، دیگه بستگی به خودتون کی و چطوری نقشه رو فراخوانی کنید. تو فرم لود پروژه کد های زیر رو بنویسید.
private void Form1_Load(object sender, EventArgs e)
{
gmap.MapProvider = GMap.NET.MapProviders.GoogleMapProvider.Instance;
GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerAndCache;
gmap.SetPositionByKeywords("IRAN,isfahan");
}
اگه قبل از اجرا تو پنجره properties خاصیت minzoom=2 و maxzoom=18 و zoom=13 باشه نقشه به این شکل بالا میاد.

خب حالا کدها رو یه بررسی کنیم :
1- Configure a map provider
خط اول ما یه نمونه از مپ ایجاد کردیم که از نوع google هست ولی شما هر مپی که نیاز داشتین میتونید انتخاب کنید.2- Set the GMap working mode to use only server data
خط دوم ما انتخاب کردیم که نثشه به چه شکل لود بشه که گزینه انتخابی ما ServerAndCache شد . گزینه اول servrOnly بود که فقط به صورت آنلاین مپ لود میشه و بدون اینترنت نقشه لود نمیشه. گزینه که ما انتخاب کردیم نقشه به صورت آنلاین لود میشه و همزمان به صورت کش ذخیره میشه که اگر باز لود کردیم ولی اینترنت نداشتیم قسمت هایی که قبلا به صورت کش ذخیره شده باشه رو نمایش بده. و قسمت سوم تنها به صورت کش نمایش میده .3- Center the map
با اجرای تابع SetPositionByKeywords میگیم که نقشه از کجا لود بشه. یا مرکز جایی که قرار رو نقشه باشه کجا باشه.البته باید در نظر داشت که همیشه با این تابع نمیشه از کجا لود بشه، بستگی داره نقشه اسم اون شهر یا مکانی که میدیم رو بشناسه یا نه. روش جایگزین برای این تابع استفاده موقعیت (position) هست که شما میتونید با دادن طول و عرض جغرافیایی دقیقا بگین از چه قسمتی نقشه لود بشه. واسه به دست آوردن طول و عرض جغرافیایی میتونید از سایت ها متفاوتی استفاده کنید که یک نمونش میتونید از اینجا استفاده کنید.
حالا می تونید خط سوم کد را با این کد عوض کنید. من به جای اسم کشور و شهر از طول و عرض جغرافیایی استفاده کردم که دقیقا همون مکان رو نشون میده.
gmap.Position = new GMap.NET.PointLatLng(32.648163, 51.674332);
خب کار ما فعلا تو این قسمت تمومه. تو قسمت بعدی آموزش علامت گذاری (marker) روی نقشه رو آموزش میدیم.
ایجاد نقشه در سی شارپ ویندوز فرم
فراخوانی نقشه
مطالب مرتبط با این موضوع
دیدگاه خود را درباره این مطلب بنویسید:
-
سلام استاد ببخشید میشه نقشه هارو به صورت افلاین استفاده کرد؟چه طوری؟
-
سلام و تشکر بابت اموزش من با استفاده از دستور زیر تونستم نقشه رو استخراج کنم که بصورت یک دیتابیس اسکیولایت ذخیره میشود. gmap.Manager.ExportToGMDB( sfd.FileName); مشکلی که مطرحه اینه که چطوری دوباره اینو لود کنم ؟ دستور زیر رو نوشتم ولی متاسفانه کار نکرد! gmap.Manager.ImportFromGMDB (dlg.FileName);
-
سلام و خسته نباشید مهندس عزیز. می خواستم بدونم چطوری میشه داخل نقشه بین دو نقطه خط کشید. فرض کنید بخوام مسیر خط لوله نمایش بدم
سلام. وقت شما بخیر. در آموزش سوم همین مبحث طریقه کشیدن مسیر و خط و طول مسافت رو توضیح دادیم. ایجاد مسیر در نقشه سی شارپ
-
سلام و خسته نباشید. من چطور میتونم یه مارک رو به نقشه اضافه کنم. جوری که ترنسپرنت هم باشه و یک مختصات از فرم بهش بدم نه لت و لانگ. ینی میخوام مثلا گوشه صفحه یه آرم بذارم. با پنل این کارو کردم. ولی موقع حرکت نقشه عکسای نقشه روی پنل تیکه تیکه میشد...
-
ممنون از پاسختون دو سوال دیگه هم در این مورد دارم.. عذر میخام! با این حساب میشه مپ اندروید رو با سی شارپ پیاده سازی کرد. اون مپ ی خاصیتی داره که اگه اسم ی خیابون رو وارد کنیم به صورت ساجسشن نام شهرهایی که اون خیابون رو داره یا خیابون های فرعی با اون خیابون رو نشون میده خواستم ببینم میشه با این کتابخونه میشه این طور چیزی پیاده سازی کرد یا الگوریتمش رو باید خودمون بنویسیم؟ سوال بعدی اینکه من در مورد ماهیت مپ های میخام تحقیق کنم (مثلا اینکه چه مدل فایل هایی هستند و چطور به این شکل در اومدن) اما به منبع درستی دسترسی ندارم! و با سرچی که کردم بجایی نرسیدم این ش