شاید شما هم همانند بسیاری دیگر از برنامه نویسان در استفاده از API تازه کار هستید ، چراکه بسیاری از برنامه نویسان پس از جستجو در صفحه API Google Maps ، مطمئن نیستند که API مشخصی برای گوگل مپ وجود دارد که در زبان سی شارپ استفاده شود !
ابزارهای بسیاری برای انجام اینکار وجود دارد اما بیاید به جای رفرنس دهی خودمان این پرسش را پاسخ دهیم و ببینیم چگونه می شود به سرویس گوگل مپ در زبان سی شارپ دسترسی گرفت.
روش اول
1. درخواست های Google Maps API را توسط خودتان ایجاد کنید
شما در قدم اول تنها کاری که باید ابتدا انجام دهید این است که HTTP-Requests را به google maps API ارسال کنید و سپس با نتایج بدست آمده را ، در هر کار دیگری که میخواهید به کار ببرید. برای فراخوانی درخواست ها به google api می توانید از WebRequest استفاده کنید. برای این کار به یک کلید API Maps نیاز دارید. پس از ورود به لینک قرار داده شده از مستندات آن سایت برای ساخت کلید استفاده کنید.
سپس در قدم بعدی شما باید پارامترهای GET را ایجاد کنید. پارامتر شما چیزی شبیه به مورد زیر است :
origin=…&destination=…&key=YOUR_API_KEY
Google Maps Api Documentation (در بخش API های وب سرویس) پارامترهای درخواست و پاسخ های دریافت بسیاری مثال زده شده است که در لینک قرار داده شده می توانید این نمونه کدها را مشاهده کنید.
قطعه کدی که در زیر مشاهده می کنید توسط برنامه کامپایلر به جهت تست آزمایش شده و خروجی صحیح مدنظر را بدست آورد.
string url = @"https://maps.googleapis.com/maps/api/directions/json?origin=75+9th+Ave+New+York,+NY&destination=MetLife+Stadium+1+MetLife+Stadium+Dr+East+Rutherford,+NJ+07073&key=YOUR_API_KEY"; WebRequest request = WebRequest.Create(url); WebResponse response = request.GetResponse(); Stream data = response.GetResponseStream(); StreamReader reader = new StreamReader(data); // json-formatted string from maps api string responseFromServer = reader.ReadToEnd(); response.Close();
پس از راه اندازی اولیه قطعه کد بالا پاسخ JSON چیزی شبیه به مورد زیر خواهد بود :
لینک کمکی برای مطالعه بیشتر
{ "geocoded_waypoints" : [ { "geocoder_status" : "OK", "place_id" : "ChIJRVY_etDX3IARGYLVpoq7f68", "types" : [ "bus_station", "transit_station", "point_of_interest", "establishment" ] }, { "geocoder_status" : "OK", "partial_match" : true, "place_id" : "ChIJp2Mn4E2-woARQS2FILlxUzk", "types" : [ "route" ] } ], "routes" : [ { "bounds" : { "northeast" : { "lat" : 34.1330949, "lng" : -117.9143879 }, "southwest" : { "lat" : 33.8068768, "lng" : -118.3527671 } }, "copyrights" : "Map data ©2016 Google", "legs" : [ { "distance" : { "text" : "35.9 mi", "value" : 57824 }, "duration" : { "text" : "51 mins", "value" : 3062 }, "end_address" : "Universal Studios Blvd, Los Angeles, CA 90068, USA", "end_location" : { "lat" : 34.1330949, "lng" : -118.3524442 }, "start_address" : "Disneyland (Harbor Blvd.), S Harbor Blvd, Anaheim, CA 92802, USA", "start_location" : { "lat" : 33.8098177, "lng" : -117.9154353 }, ... Additional results truncated in this example[] ... "overview_polyline" : { "points" : "knjmEnjunUbKCfEA?_@]@kMBeE@qIIoF@wH@eFFk@WOUI_@?u@j@k@`@EXLTZHh@Y`AgApAaCrCUd@cDpDuAtAoApA{YlZiBdBaIhGkFrDeCtBuFxFmIdJmOjPaChDeBlDiAdD}ApGcDxU}@hEmAxD}[tt@yNb\\yBdEqFnJqB~DeFxMgK~VsMr[uKzVoCxEsEtG}BzCkHhKWh@]t@{AxEcClLkCjLi@`CwBfHaEzJuBdEyEhIaBnCiF|K_Oz\\ {MdZwAbDaKbUiB|CgCnDkDbEiE|FqBlDsLdXqQra@kX|m@aF|KcHtLm@pAaE~JcTxh@w\\`v@gQv`@}F`MqK`PeGzIyGfJiG~GeLhLgIpIcE~FsDrHcFfLqDzH{CxEwAbBgC|B}F|DiQzKsbBdeA{k@~\\oc@bWoKjGaEzCoEzEwDxFsUh^wJfOySx[uBnCgCbCoFlDmDvAiCr@eRzDuNxC_EvAiFpCaC|AqGpEwHzFoQnQoTrTqBlCyDnGmCfEmDpDyGzGsIzHuZzYwBpBsC`CqBlAsBbAqCxAoBrAqDdDcNfMgHbHiPtReBtCkD|GqAhBwBzBsG~FoAhAaCbDeBvD_BlEyM``@uBvKiA~DmAlCkA|B}@lBcChHoJnXcB`GoAnIS~CIjFDd]A|QMlD{@jH[vAk@`CoGxRgPzf@aBbHoB~HeMx^eDtJ}BnG{DhJU`@mBzCoCjDaAx@mAnAgCnBmAp@uAj@{Cr@wBPkB@kBSsEW{GV}BEeCWyAWwHs@qH? cIHkDXuDn@mCt@mE`BsH|CyAp@}AdAaAtAy@lBg@pCa@jE]fEcBhRq@pJKlCk@hLFrB@lD_@xCeA`DoBxDaHvM_FzImDzFeCpDeC|CkExDiJrHcBtAkDpDwObVuCpFeCdHoIl\\uBjIuClJsEvMyDbMqAhEoDlJ{C|J}FlZuBfLyDlXwB~QkArG_AnDiAxC{G|OgEdLaE`LkBbEwG~KgHnLoEjGgDxCaC`BuJdFkFtCgCnBuClD_HdMqEzHcBpB_C|BuEzCmPlIuE|B_EtDeBhCgAdCw@rCi@|DSfECrCAdCS~Di@jDYhA_AlC{AxCcL`U{GvM_DjFkBzBsB`BqDhBaEfAsTvEmEr@iCr@qDrAiFnCcEzCaE~D_@JmFdGQDwBvCeErEoD|BcFjC}DbEuD~D`@Zr@h@?d@Wr@}@vAgCbEaHfMqA`Cy@dAg@bAO`@gCi@w@W" }, "summary" : "I-5 N and US-101 N", "warnings" : [], "waypoint_order" : [] } ], "status" : "OK" }
2- یا از کتابخانه اختصاصی استفاده کنید
در این لینک یک رابط api برای Google Maps ارائه داده شده است . شما می توانید آن را از طریق سرویس محبوب nuget در ویژوال استودیو دریافت کنید. ما این مورد را بررسی نکرده ایم اما استفاده از آن بسیار آسان به نظر می رسد.
حتما قبل از استفاده از کتابخانه ها ، از به روز بودن آنها مطمئن شوید.
روش دوم
همانطور که پیشتر ذکر شد ، شما می توانید درخواست HTTP ارسال کنید و از پاسخ آن با فرمت JSON استفاده کنید.
همچنین اگر یک کتابخانه دات نت می خواهید می توانید از یکی از این کتابخانه های بسته بندی دات نت برای API Google Maps استفاده کنید:
نمونه قطعه کد مثال زده شده برای استفاده از گوگل مپ در سی شارپ :
using GoogleApi.Entities.Common; using GoogleApi.Entities.Maps.Directions.Request; using GoogleApi.Entities.Maps.Directions.Response; public void GetRoute() { DirectionsRequest request = new DirectionsRequest(); request.Key = "AIzaSyAJgBs8LYok3rt15rZUg4aUxYIAYyFzNcw"; request.Origin = new Location("Brasov"); request.Destination = new Location("Merghindeal"); var response = GoogleApi.GoogleMaps.Directions.Query(request); Console.WriteLine(response.Routes.First().Legs.First().DurationInTraffic); Console.WriteLine(response.Routes.First().Legs.First().Distance); Console.WriteLine(response.Routes.First().Legs.First().Steps); }
کدهای بیشتر - سی شارپ
جستجو یک متن در یک آرایه سی شارپ #C
1 Comments
ممنون از نوشته خوبتون
روش اول رو امتحان کردم . خواستم به سایر دوستانم بگم با وجود محدودیت و تحریم ها ولی این سورس قرار داده شده به درستی کار میکنه
ممنون از مطالب خوبتون