Merhabalar. İki kullanıcım var. Bu iki kullanıcının enlem ve boylam değerlerini kayıt olurken adres bilgisinden alıyorum. Bu iki kişi arasında mesafe kaç km var onu göstermek istiyorum fakat google maps'dan kontrol edince doğru sonuç üretmediğini gördüm. Örneğin İstanbul - Malatya ya kayıt olan iki kullanıcının birbirlerine olan uzaklığını 862.98 km
olarak hesaplarken google maps'in 1.124 km
olarak hesapladuğını gördüm. Bu açıklık mesafe büyük olunca daha da artmakta. Enlem ve boylam değerlerim şu şekilde; 41.0082,28.9784 - 38.3228,38.4447
. Hesaplama kodu da şu şekilde;
` $getCity = City::where('id', $employe->city)->first();
if (is_null($lan) && is_null($lon)) {
$lann = $employe->lan ? $employe->lan : $getCity->latitude;
$lonn = $employe->lon ? $employe->lon : $getCity->longitude;
} else {
$lann = $lan;
$lonn = $lon;
}
$data = [
'appointmentDistance' => DB::table('appointment_creates')
->join('cities', 'cities.id', '=', 'appointment_creates.city')
->whereIn('appointment_creates.acente_id', json_decode($id))
->where('appointment_creates.appointment_status', '!=', 2)
->orWhere('acente_is_pool','=',1)
->where(function($query) use($employe){
$query->where(function($query) use($employe){
$query->whereNull('fav_employe_id')
->orWhereRaw("fav_employe_id LIKE concat('%',?,'%')", [$employe->id]);
});
})
->select(
"*", "appointment_creates.id",
DB::raw("ROUND(6371 * acos(cos(radians(" . $lann . "))
* cos(radians(appointment_creates.lan))
* cos(radians(" . $lonn . ") - radians(appointment_creates.lon))
+ sin(radians(" . $lann . "))
* sin(radians(appointment_creates.lan))), 2) AS distance")
)
->orderBy('distance')
->get(),
];`
Nerede hata yapmış olabilirim?