رفتن به مطلب
  • 0

دریافت نزدیک ترین مختصات به مختصات کاربر


majerajoo

سوال

با عرض سلام و خسته نباشید
من تو بیسیک میخوام کار زیر رو انجام بدم اگه بلدید بگید خیلی گیرم
فرض کن من متخصات های زیر رو دارم


لباس فروشی: 36.2169735,57.6876588
موبایل فروشی: 36.2156176,57.6696656
موبایل فروشی: 36.2156176,57.6696656
لباس فروشی:36.2169735,57.6876588
لباس فروشی: 36.2169735,57.6876588
موبایل فروشی: 36.2156176,57.6696656

من میخوام وقتی کاربر مثلا روی لباس فروشی زد برنامه بره از دیتابیس مختصات های بالا رو که دو تا ستون Lat و Lon هستش رو بگیره و از اون طرف هم مختصات فعلی کاربر رو که از قبل گرفته شده بیاره با این ها مقایسه کنه و نزدیک ترین مختصات هایی که بهش هست رو جدا کنه و نمایش بده

من همه مراحل بالا رو بلدم جز اونجایی که میخوام مقایسه کنه و نزدیک ترین رو نشون بده

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

* با همون روش بالا البته میتونستید  بااستفاده از جیسون گوگل مپ وفایل php وارسال وپست نقاطتان به php ودریافت جیسون گوگل مپ ،فاصله بین نقاطی که دردیتابیس ذخیره دارید  رو پیداکنید که ظاهرا الان این روش توی نرم افزارهای اندرویدی رایجه !

که distance    فاصله مکانی بر اساس مایل هست و duration فاصله زمانی بین دومحله که احتمال میدهم که خیلی دقیقتر وباتوجه به مسیرها باشد! 

 

distance = فاصله مکانی بین دومحل بر اساس مایل (mi) 
duration= فاصله زمانی بین دونقطه براساس دقیقه وساعت 

"distance" : {
                  "text" : "277 mi",
                  "value" : 446542
               },
"duration" : {
                  "text" : "4 hours 40 mins",
                  "value" : 16779

 

نمونه سورس هم برای دوستان انجمن که از جیسون سایت گوگل مپ برای یافتن فاصله ها در لینک زیر قراردادم 

که هم با API KEY وهم بدون API KEY کارمیکند

(لینک نمونه سورس یافتن فاصله ها بوسیله جیسون سایت گوگل مپ بصورت آنلاین)

 

 

 

خب ولی بااین وجود اگه میخواین مثل ترسیم یک خط کش بین دونقطه جفرافیایی ،فاصله بین دو محل رو با مختصاتی که دارد بدست بیارید می تونید از این دستورات php یا سورسی که براتون باکمی تغییر از سایت مرجع تهیه کردم  استفاده کنید که با استفاده از دستورات سینوس کسینوس و تبدیل درجه به رادیان فاصله رو پیدامیکنه 

 

محتویات فایل php که فاصله رو براساس مایل ، کیلومتر ، متر، یارد و... پیدا میکنه 

function getDistanceBetweenPointsNew($latitude1, $longitude1, $latitude2, $longitude2) {

    $theta = $longitude1 - $longitude2;

    $miles = (sin(deg2rad($latitude1)) * sin(deg2rad($latitude2))) + (cos(deg2rad($latitude1)) * cos(deg2rad($latitude2)) * cos(deg2rad($theta)));

    $miles = acos($miles);

    $miles = rad2deg($miles);

    $miles = $miles * 60 * 1.1515;

    $feet = $miles * 5280;

    $yards = $feet / 3;

    $kilometers = $miles * 1.609344;

    $meters = $kilometers * 1000;

    return compact('miles','feet','yards','kilometers','meters');

}

و حالا نحوه استفاده از این تابع :

$point1 = array('lat' => 40.770623, 'long' => -73.964367);
$point2 = array('lat' => 40.758224, 'long' => -73.917404);
$distance = getDistanceBetweenPointsNew($point1['lat'], $point1['long'], $point2['lat'], $point2['long']);
foreach ($distance as $unit => $value) {
    echo $unit.': '.number_format($value,4).'
';
}

____ منبع :

تابعی برای محاسبه فاصله بین دو نقطه جغرافیایی

__________

سورس بیسیک فور جهت یافتن مقدار فاصله بین دو محل جغرافیایی براساس کیلومتر :

(لینک سورس فاصله بین دونقطه مبداومقصدبدون نیاز به API KEY بصورت آفلاین )

 

منبع:

B4J Question - Calculate distance between two latitude-longitude points? | B4X Community - Android, iOS, desktop, server and IoT programming tools

Measurement of Distances | B4X Community - Android, iOS, desktop, server and IoT programming tools

Android Code Snippet - [B4X] Find distance between two points (Lat/Lon) | B4X Community - Android, iOS, desktop, server and IoT programming tools

 

 

______سایت جامعی در روش محاسبه فاصله بین دو نقطه جغرافیایی:

Calculate distance and bearing between two Latitude/Longitude points using haversine formula in JavaScript

لینک ارسال
به اشتراک گذاری در سایت های دیگر

باسلام 

ظاهرا منظورتون (Google Maps API - Distance Calculator) هست .

این لینک رو یک نظر بیاندازیدببینیدبه کارتون میاد ، چندین لینک فایل php برای اینکار قبلا توی انجمن گذاشته ام .

 

مقدار Distance که مثلا فایل php به شما میده همان مقدار فاصله بین دو منطقه از نقشه گوگل مپ هست 

 

 

Distance from point A to B using Google Maps, PHP and MySQL - Stack Overflow

 

To: Gazowa 1, 91-076 Łódź, Poland
From: Więckowskiego 72, Łódź, Poland
Time: 206 seconds
Distance: 1488 meters

 

این کدها رو هم تست کنید که با جیسون گوگل فاصله رو میده : 

http://maps.googleapis.com/maps/api/distancematrix/json?callback=?&origins=-25.8350643,28.1636066&destinations=-25.551836,%2028.423075|-25.218503,%2027.923075|&sensor=false
https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Razi+Park&destinations=35.743184,51.352154&key=AIzaSyCsMZ9silYmEXEaVTeCscMByfCo4nrTGIw

https://maps.googleapis.com/maps/api/distancematrix/xml?units=imperial&departure_time=1408046331&origins=37.407585,-122.145287&destinations=37.482890,-122.150235

 

 

____________

یک فرمولی هم که خود گوگل در لینک زیر  داده اینطوریه: 

https://developers.google.com/maps/documentation/distance-matrix/start

 

 

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Washington,DC&destinations=New+York+City,NY&key=YOUR_API_KEY

 

 

این مثلا فاصله بین تهران تا اصفهان رو میده:

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=esfehan&destinations=tehran&key=خودتان را واردکنید API KEY

یااین فاصله بین پارک راضی وپارک پردیسان رو میده 

https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Razi%20Park&destinations=Pardisan%20Park&key=خودتان را واردکنید API KEY
https://maps.googleapis.com/maps/api/distancematrix/json?units=imperial&origins=Razi+Park&destinations=Pardisan+Park&key=خودتان را واردکنید API KEY

____________

 

 

نتیجه جیسون هم اینطور میشه:

{
   "destination_addresses" : [ "Tehran, Tehran Province, Iran" ],
   "origin_addresses" : [ "Isfahan, Isfahan Province, Iran" ],
   "rows" : [
      {
         "elements" : [
            {
               "distance" : {
                  "text" : "277 mi",
                  "value" : 446542
               },
               "duration" : {
                  "text" : "4 hours 40 mins",
                  "value" : 16779
               },
               "status" : "OK"
            }
         ]
      }
   ],
   "status" : "OK"
}

__ Api key رو هم درهمون صفحه لینک بالا به کاربر میده 

 

__________

این هم ببینید برای گرفتن مقادیر جیسون بالا دربیسیک به کارتون میاد:

Dim parser As JSONParser 
parser.Initialize(<text>) 
Dim root As Map = parser.NextObject 
Dim destination_addresses As List = root.Get("destination_addresses") 
For Each coldestination_addresses As String In destination_addresses 
Next 
Dim rows As List = root.Get("rows") 
For Each colrows As Map In rows 
 Dim elements As List = colrows.Get("elements") 
 For Each colelements As Map In elements 
  Dim duration As Map = colelements.Get("duration") 
  Dim text As String = duration.Get("text") 
  Dim value As Int = duration.Get("value") 
  Dim distance As Map = colelements.Get("distance") 
  Dim text As String = distance.Get("text") 
  Dim value As Int = distance.Get("value") 
  Dim status As String = colelements.Get("status") 
 Next 
Next 
Dim origin_addresses As List = root.Get("origin_addresses") 
For Each colorigin_addresses As String In origin_addresses 
Next 
Dim status As String = root.Get("status") 

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در 5 ساعت قبل، نورنما گفته است :

باسلام 

ظاهرا منظورتون (Google Maps API - Distance Calculator) هست .

این لینک رو یک نظر بیاندازیدببینیدبه کارتون میاد ، چندین لینک فایل php برای اینکار قبلا توی انجمن گذاشته ام .

 

مقدار Distance که مثلا فایل php به شما میده همان مقدار فاصله بین دو منطقه از نقشه گوگل مپ هست 

خیر دوست عزیز من با api گوگل کاری ندارم

من مقتصات ها رو خودم دستی توی دیتابیس دارم و میخوام نزدیکی مختصات کاربر رو با مختصات هایی که توی دیتابیس دارم مقایسه کنم

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...