Страница 1 из 1

OSM + leaflet

Добавлено: 12 ноя 2019, 14:09
AgentSmith
Добрый день!
Подскажите пожалуйста как можно реализовать :
нужно от заданной точки нарисовать сектор излучения, в Yandex картах я это реализовал, но сейчас т.к. сделали платным api, нельзя искать адреса на созданной карте.
Хочу перейти на OpenStreetMaps, использую для данных mysql, реализовано на php и javascript

Код: Выделить всё

Point1 = coordSystem.solveDirectProblem([<?php echo $_POST["var1"]; ?>, <?php echo $_POST["var2"]; ?>],  [Math.cos((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-60)*Math.PI/180), Math.sin((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-60)*Math.PI/180)], <?php echo $q1;?>);  
    Point2 = coordSystem.solveDirectProblem([<?php echo $_POST["var1"]; ?>, <?php echo $_POST["var2"]; ?>],  [Math.cos((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-50)*Math.PI/180), Math.sin((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-50)*Math.PI/180)], <?php echo $q1;?>);
    Point3 = coordSystem.solveDirectProblem([<?php echo $_POST["var1"]; ?>, <?php echo $_POST["var2"]; ?>], [Math.cos((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-40)*Math.PI/180), Math.sin((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-40)*Math.PI/180)], <?php echo $q1;?>);
    Point4 = coordSystem.solveDirectProblem([<?php echo $_POST["var1"]; ?>, <?php echo $_POST["var2"]; ?>], [Math.cos((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-30)*Math.PI/180), Math.sin((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-30)*Math.PI/180)], <?php echo $q1;?>);
    Point5 = coordSystem.solveDirectProblem([<?php echo $_POST["var1"]; ?>, <?php echo $_POST["var2"]; ?>], [Math.cos((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-20)*Math.PI/180), Math.sin((<?php if (empty($_POST["var3"])) { echo 0;} else { echo $_POST["var3"];};?>-20)*Math.PI/180)], <?php echo $q1;?>);
var1 и var2 это координаты точки на карте(широта, долгота), var3 это азимут, q1 это расстояние излучения
Получается здесь мы берем координаты, если азимут пришел берем его, если нет - то считаем его нулём, -60,50,40,30,20,10,0,+10,+20,+30,+40,+50,+60 и т.д. это отклонение каждой точки
т.е. всего 3 сектора получается по 120 градусов каждый (всего 360)

Re: OSM + leaflet

Добавлено: 12 ноя 2019, 14:10
AgentSmith
берем расстояние и накладываем на карту.
3.jpeg
3.jpeg (171.49 КБ) 5320 просмотров
Как это реализовать в OSM + leaflet?
Точку поставил на карту, а как сектор нарисовать не пойму
html.png
html.png (66.11 КБ) 5320 просмотров
Я ещё чайник, так что не критикуйте сильно :)

Re: OSM + leaflet

Добавлено: 12 ноя 2019, 14:13
trir
а как ты расстояние считаешь? код выложи

Re: OSM + leaflet

Добавлено: 12 ноя 2019, 14:58
freeExec
На Яндексе как рисовал?

Re: OSM + leaflet

Добавлено: 12 ноя 2019, 15:04
AgentSmith
trir писал(а):
12 ноя 2019, 14:13
а как ты расстояние считаешь? код выложи
Расстояние у меня задается вручную, по умолчанию 2000 метров. Код блокирует сайт, не дает отправить, пишет что похоже на спам, поэтому скриншотом выложил

Re: OSM + leaflet

Добавлено: 12 ноя 2019, 15:13
trir
Код блокирует сайт, не дает отправить
приложи архив

Re: OSM + leaflet

Добавлено: 12 ноя 2019, 15:36
AgentSmith
приложи архив
yandex.php это соответственно яндекс карты, osm.php это то что я пытаюсь в openstreetmap сделать
php.rar
(5.09 КБ) 351 скачивание

Re: OSM + leaflet

Добавлено: 13 ноя 2019, 09:30
trir
рисуй полигон, что бы расстояния превратить в координаты нужно решить геодезическую задачу, можно написать свою или использовать готовую реализацию:
https://github.com/proj4js/proj4js
https://github.com/mapbox/leaflet-geodesy
https://github.com/chrisveness/geodesy