<?php
class Location {
public $lat, $lon, $name;
public function __construct($lat, $lon, $name='') {
$this->lat = $lat;
$this->lon = $lon;
$this->name = $name;
}
public function getDistanceTo(Location &$obj) {
$lat1 = $this->lat * M_PI / 180;
$lon1 = $this->lon * M_PI / 180;
$lat2 = $obj->lat * M_PI / 180;
$lon2 = $obj->lon * M_PI / 180;
$d_lon = $lon1 - $lon2;
$slat1 = sin($lat1);
$slat2 = sin($lat2);
$clat1 = cos($lat1);
$clat2 = cos($lat2);
$sdelt = sin($d_lon);
$cdelt = cos($d_lon);
$y = pow($clat2 * $sdelt, 2) + pow($clat1 * $slat2 - $slat1 * $clat2 * $cdelt, 2);
$x = $slat1 * $slat2 + $clat1 * $clat2 * $cdelt;
return atan2(sqrt($y), $x) * 6372795 / 1000; // в км.
}
};
$objects = [
new Location(55.7518, 37.6176, 'Московский Кремль'),
new Location(55.7702, 37.5952, 'м. Маяковская'),
new Location(55.7621, 37.8555, 'Реутов'),
new Location(55.6592, 37.6626, 'Коломенское'),
new Location(55.8549, 37.4761, 'м. Речной вокзал'),
new Location(55.9088, 37.7332, 'Мытищи'),
];
$current = new Location(55.7800, 37.6138);
$maxDistance = 12; // в километрах
foreach ($objects as $obj) {
$dist = $obj->getDistanceTo($current);
if ($dist < $maxDistance) {
echo sprintf("%s (%0.2f км)<br>", $obj->name, $dist);
}
}
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row justify-content-center">
<div class="col-md-12 mb-3">
<div class="card">
<div class="card-header">{{ __('servers.' . $title) }}</div>
<div class="card-body">
<div id="servers">
<servers-component :langs-prop="'{{ base64_encode(json_encode($langs)) }}'" :servers-prop="'{{ base64_encode(json_encode($servers, JSON_NUMERIC_CHECK)) }}'"></servers-component>
</div>
{{ $servers->links() }}
</div>
</div>
</div>
</div>
</div>
@endsection
preg_replace('/([А-ЯЁ])/smu', " $0", 'БетонДерево')
$('.parent') // берем родительские блоки
.on('mouseenter', '[data-id]', event=>{ // вешаем обработчики на дочерние
let id = $(event.target).data('id'); // узнаем id
$(event.target).closest('.parent') // поднимаемся до своего родителя
.siblings('.parent') // переходим к соседу
.find('[data-id='+id+']') // берем в нем нужный дочерний
//... что-то с ним делаем
;
})
$('.parent').eq(0) // берем родительские блоки - только первый
$arr = eval("return $str;");
Интересные задачки, всякие тесты, неожиданные нюансы языка и тд. Короче, всякого рода места на просторах интернета, где можно встретить живое общение, обсуждение и споры, реальные кейсы.