امتیاز دهید

دنبال کردن



اسفاده از نقشه گوگل در سی شارپ قسمت سوم





farsoft logo
فرسافت

در این قسمت از سری آموزش های کتابخانه GMAP.NET ما توضیح خواهیم داد که چطور یک محدوده رو انتخاب کنید (polygon) و همچنین چطور یک مسیر (route) رو مشخص کنید .


مسیر در نقشه گوگل در سی شارپ

برای یادگیری بیشتر سعی کنید در ابتدا آموزش ایجاد نقشه گوگل در سی شارپ و همچنین آموزش ایجاد marker روی نقشه رو مرور کرده باشید.

اضافه کردن polygons به نقشه

بعضی وقتها با ایجاد مارکر رو نقشه نمیتونید به بیننده محدوده رو نشان دهید. بهترین کار اینه که بیاین کلا اون محدوده یا ساختمون رو رنگی نشون بدید تا بهتر مشخص باشه. خب polygons قرار این کار رو واسه ما انجام بده. برای این کار ما به طول و عرض جغرافیایی اون محدوده نیاز داریم که بستگی به این داره که محدوده چند ضلع داره ما هم به همون تعداد نیاز به طول و عرض جغرافیایی داریم.

					
private void Form1_Load(object sender, EventArgs e)
  {
          
    gmap.MapProvider =GoogleMapProvider.Instance;
    GMaps.Instance.Mode = AccessMode.ServerAndCache;
    gmap.SetPositionByKeywords("IRAN,isfahan");
    GMapOverlay overlay1 = new GMapOverlay("polygons");
    List<PointLatLng> points = new List<PointLatLng>();
    points.Add(new PointLatLng(32.588246, 51.662011));
    points.Add(new PointLatLng(32.588608, 51.668405));
    points.Add(new PointLatLng(32.584775, 51.669306));
    points.Add(new PointLatLng(32.585209, 51.662826));
    GMapPolygon polygon = new GMapPolygon(points, "کوی سپاهان");
    overlay1.Polygons.Add(polygon);
    gmap.Overlays.Add(overlay1);
  }
					
				

خب ما اینجا در ابتدا یه نمونه از overlay نیاز داریم. اگه یادتون باشه تو آموزش قبلی گفتم زمانی که میخواین یک marker یا polygons ایجاد کنید حتما باید یک overlay ایجاد کنید و بعد overlay رو به نقشه اضافه کنید. بهترین کار اینه که marker تو یه overlay جدا و polygons هم تو overlay جدا باشه، گرچه شما آزادید که همه رو تو یه overlay داشته باشین. خب ما اسم این overlay رو گذاشتیم overlay1 یا هر اسمی که شما دوست دارین بذارین.

بعد اومدیم یه list درست کردیم به اسم points و تمام نقاطی که لازم داریم رو بهش اضافه کردیم.

سپس اومدیم یک نمونه از GMapPolygon به اسم polygon ایجاد کردیم که دو تا پارامتر ورودی داره: اول مجموعه ای از نقاط که ما points رو بهش میدیم و بعدی یه رشته که نام دلخواه برای اون مکان است میخواد.(هر مکانی که قراره مشخص کنید) خط بعد polygon رو به نمونه overlay ای که ایجاد کردیم اضافه کردیم و در نهایت overlay رو به نقشه اضافه کردیم.

ایجاد polygon  در نقشه

خب حالا که تصویر رو میبینید polygon به صورت پیش فرض رنگ سفید با حاشیه بنفش داره. حالا ما میتونیم خودمون هر رنگی که دوست داریم رو بهش بدیم:

					
polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
polygon.Stroke = new Pen(Color.Red, 1);
					
				

خب خط اول رنگ از طریق RGB قرمز دادم که alpha رو 50 دادم (alpha از 0 شروع میشه که شفاف ترینه تا 255 که کاملا کدر میشه) و رنگ حاشیه رو هم قرمز دادم با ضخامت یک پیکسل.

تغییر رنگ polygon در نقشه

اضافه کردن مسیر به نقشه

در GMAP.NET اضافه کردن کردن مسیر (route) و محدوده (polygons) دقیقا به یک صورت هست فقط تو ایجاد مسیر دیگه fill کردن رنگ نداریم.

					
  gmap.MapProvider =GoogleMapProvider.Instance;
  GMaps.Instance.Mode = AccessMode.ServerAndCache;
  gmap.SetPositionByKeywords("IRAN,isfahan");
  GMapOverlay overlay1 = new GMapOverlay("polygons");
 List<PointLatLng> points = new List<PointLatLng>();
  points.Add(new PointLatLng(32.588131, 51.667833));
  points.Add(new PointLatLng(32.588049, 51.665419));
  points.Add(new PointLatLng(32.587028, 51.665902));
  GMapRoute route = new GMapRoute(points, "مسیر من");
  route.Stroke = new Pen(Color.Red, 3);
  overlay1.Routes.Add(route);
  gmap.Overlays.Add(overlay1);
					
				

تو خط زیر یه stroke برای کشیدن مسیر ایجاد کردم با رنگ قرمز و ضخامت 3 پیکسل که به صورت پیش فرض خودش بنفشه، این دیگه بستگی به استفاده خودتون داره

					
  route.Stroke = new Pen(Color.Red, 3);
					
				
ایجاد مسیر در نقشه

نتیجه گیری

در این 3 آموزش ما کار با فراخوانی نقشه و ایجاد مارکر و ایجاد محدوده و مسیر رو توضیح دادیم. گرچه امکانات دیگه ای هم داره که فقط نیاز به یه مقدار تمرین داره. شما میتونید از نقشه های متفاوتی استفاده کنید گرچه بعضی نقشه ها برای کشور ما به خوبی باز نمیشن یا اسم مناطق رو به خوبی ندارن.

نکته: زمانی کی یک مارکر یا محدوده یا مسیر به overlay اضافه میکنید فراموش نکنید که در نهایت overlay رو به نقشه اضافه کنید.

اگه دیدین که marker موقع اجرا نمایش داده نمیشن برید قسمت properties کنترل چک کنید که خاصیت MarkersEnable حتما true باشه، گرچه پیش فرض به صورت true هست.

کار کردن با کتابخانه GMAP.NET و نقشه در سی شارپ نیاز به اینترنت داره ولی زمانی که instance.mode رو به صورت serverAndCache میذارید جز اینکه آنلاین نشون میده همین مقدار نقشه ای که نمایش داده رو به صورت کش ذخیره میکنه که اگه با اجرای بعدی اینترنت نداشته باشین میتونه از کش استفاده کنه.

از این که در طول این آموزش همراه ما بودید سپاسگذارم.

ایجاد مسیر و محدوده در سی شارپ ویندوز فرم


ایجاد محدوده و مسیر

در صورت مفید بودن این مطلب را به اشتراک بگذارید

مطالب مرتبط با این موضوع




دیدگاه خود را درباره این مطلب بنویسید:




  • محمد
    Profile Avatar

    سلام چه طوری در Microsoft Visual Studio 2013 پروژه خروجی ستاپ بگیرم هر چی گشتم چیز به درد به خوری پیدا نکردم

    ستار شاکری
    Profile Avatar

    سلام. به زودی یک آموزش برای گرفتن setup تو سایت آپلود میکنیم.

    محمد
    Profile Avatar

    خیلی خیلی ممنون میشم

  • کامران
    Profile Avatar

    با سلام و تشکر از ویدئو خوبتون چه جور میشه یه مارکر به انتهای مسیر اضافه کنیم که فقط انتها رو نشون بده و وقتی کاربر نقطه جدید رو اضافه میکنه به مسیر مارکر قبلی انتهای مسیر پاک بشه و مارکر جدید برای انتهای مسیر اضافه بشه.

    ستار شاکری
    Profile Avatar

    سلام ، ممنون از شما. شما باید در این صورت هر مارکر رو در یک layer ایجاد کنید. و برای حذف یک مارکر باید layer مربوط به اون مارکر را حذف کنید. برای این کار باید از تابع remove استفاده کنید.

  • سید رضا میرطالبی
    Profile Avatar

    سلام آقای ستاری براتون آرزوی موفقیت و دعای خیر از سمیم قلب دارم بابت زحماتی که برای تهیه این فیلم و اشتراکش تو اینترنت گذاشتید

    ستار شاکری
    Profile Avatar

    ممنون از شما دوست عزیز.

  • مهدی
    Profile Avatar

    سلام بر استاد عزیز. ممنون از اموزش عالیتون. استاد جان چطور میتونم یه زوم نرم داشته باشم رو نقشه. حالت عادی به صورت پله ای عمل میکنه اصلا جالب نیست...

    ستار شاکری
    Profile Avatar

    سلام. سپاسگزارم. متاسفانه این حرکت در توانایی این کتابخانه نیست.

  • هانی
    Profile Avatar

    سلام راهی هست که کنترل کنیم دو تا ناحیه ، یا قسمتی از ناحیه دیگر درون هم نیفتند

    ستار شاکری
    Profile Avatar

    سلام. وقتی شما یک ناحیه رو انتخاب کردین و ناحیه بعدی وارد مختصات ناحیه قبل قرار بگیره روی هم نشون داده میشه. گرچه میتوان یک شرط گذاشت بگین اگر مختصات جدید رو با قبلی مقایسه کن اگر وارد محدوده شد پیغام یا هر کاری که شما دوست دارین انجام بده.