بروزرسانی در ۱ بهمن ۱۴۰۰ : توضیحات جدید api نقشه گوگل
بروزرسانی در ۲۲-۰۱-۱۳۹۷ : افزودن سورس کد این آموزش
نکته مهم : سرویس نقشه گوگل پولی شده و دیگر مثل سابق نمی توانید بصورت رایگان از قابلیت هایی مثل محاسبه فاصله دو شهر استفاده کنید و حتما باید این سرویس رو خریداری کنید تا یک api کد دریافت و با استفاده از آن چنین درخواست هایی را از سمت کد به گوگل ارسال و خروجی دریافت کنید
لینک خرید کد api نقشه گوگل : https://mapsplatform.google.com/pricing
نحوه استفاده از کد api در کد اخر این آموزش قرار دادیم.
اگر سایت های فروش بلیت اتوبوس و قطار و یا حتی سایت های گردشگری و یا سایت هایی که خدمات نقشه راه و این موارد را ارایه می دهد بررسی کنید ، میبینید که همه آنها فقط با دادن یک شهر مبدا و مقصد به شما فاصله مکانی آن را در چندصدم ثانیه می دهد .
پیاده سازی این مورد بسیار آسان بوده و ما هم قصد داریم در این مقاله به شما نحوه ساخت همچنین سیستمی را آموزش بدیم . پس با ما همراه باشید.
ما به راحتی می توانیم فاصله دو شهر یا آدرس را توسط php و API گوگل مپ محاسبه کنیم. برای این منظور یک تابع برای دریافت فاصله بین دو شهر نوشتیم . تابع getDistance()
همه قابلیت ها را یکجا دارد و سه پارامتر را می پذیرد .
$addressFrom
– ضروری . آدرس مبدا$addressTo
– ضروری ، آدرس مقصد$unit
– اختیاری ، حرف اول واحد اندازه گیری را پاس بدید . به طور پیش فرض مایل است . (K -> kilometre , M -> Mile)
تابع getDistance() را در کد زیر می بینید :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
/** * * Author: Netparadis * Function Name: getDistance() * $addressFrom => From address. * $addressTo => To address. * $unit => Unit type. * **/ function getDistance($addressFrom, $addressTo, $unit){ //Change address format $formattedAddrFrom = str_replace(' ','+',$addressFrom); $formattedAddrTo = str_replace(' ','+',$addressTo); //Send request and receive json data $geocodeFrom = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrFrom.'&sensor=false'); $outputFrom = json_decode($geocodeFrom); $geocodeTo = file_get_contents('http://maps.google.com/maps/api/geocode/json?address='.$formattedAddrTo.'&sensor=false'); $outputTo = json_decode($geocodeTo); //Get latitude and longitude from geo data $latitudeFrom = $outputFrom->results[0]->geometry->location->lat; $longitudeFrom = $outputFrom->results[0]->geometry->location->lng; $latitudeTo = $outputTo->results[0]->geometry->location->lat; $longitudeTo = $outputTo->results[0]->geometry->location->lng; //Calculate distance from latitude and longitude $theta = $longitudeFrom - $longitudeTo; $dist = sin(deg2rad($latitudeFrom)) * sin(deg2rad($latitudeTo)) + cos(deg2rad($latitudeFrom)) * cos(deg2rad($latitudeTo)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344).' km'; } else if ($unit == "N") { return ($miles * 0.8684).' nm'; } else { return $miles.' mi'; } } |
به اینصورت می توانید از تابع استفاده کنید.
1 2 3 4 |
$addressFrom = 'Insert from address'; $addressTo = 'Insert to address'; $distance = getDistance($addressFrom, $addressTo, "K"); echo $distance; |
در اینجا ما از متغیر های ثابت برای مقدار دهی شهر و یا کشور استفاده کردیم که خب می توانید تمام این موارد را بصورت داینامیک از فرم ها دریافت کنید .(دریافت اطلاعات فرم در PHP)
یک API key گوگل را در درخواست خود به عنوان مقدار پارامتر key مشخص کنید .
1 |
$geocode = file_get_contents('https://maps.google.com/maps/api/geocode/json?address='.$formattedAddr.'&sensor=false&key=GoogleAPIKey'); |
برای دریافت api key گوگل مپ از طریق این آدرس می توانید استفاده کنید که البته نیاز به تغییر IP است .
برای دانلود سورس کد کامل این آموزش از باکس دانلود استفاده کنید.
هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .
موفق و پیروز باشید.
موفق باشید
من سورس شمار رو تست کردم ولی فاصله رو بین تبریز و تهران صفر نشون میده فیلتر شکن هم دارم ولی باز صفر اورد
سلام. باید کلید api رو بدرستی داخل سورس جایگزین کنید
موفق باشید.
گوگل جدیدا امکان ایجاد api key رو نمیده و خطای زیر رو میده و ظاهرا پولی کرده این سرویس ها رو و نیاز به شماره حساب داره.شما امتحان کنید ببینید میتونید یه key واسه نقشه ایجاد کنید اگر نشه پس این اموزش شما هم کارایی نداره
You are not an administrator of any billing accounts. To enable billing on this project, create a new billing account or contact your billing account administrator to enable billing for you. Learn more
جالب و واضح نوشتید.متشکرم