Клуб API Карт

Найдено на тему «MySQL»:
Выгрузить метки из MySql и добавить на карту через html форму
Алексей Павлов
18 декабря 2016, 13:05

Здравствуй читатель! мучаюсь уже около недели над одним вопросом. Есть база данных СТО и форма html, в которую пользователь вводит марку и должны выгружаться СТО работающие с этой маркой машины. У меня получается сформировать json и выгрузить в том случае, если я сам ввожу SQL запрос, то есть он статичен, но надо чтоб данные посылались с html формы и выводились найденные.

Файл формирования json- $result = mysql_query("SELECT * FROM ymapapiv2_markers WHERE id = '4'"); if(mysql_num_rows($result)>0){ while ($mar = mysql_fetch_array($result)){ $json = array(icontext=>$mar['iconText'], hinttext=>$mar['hintText'], balloontext=>$mar['balloonText'], styleplacemark=>$mar['stylePlacemark'], lat=>$mar['lat'], lon=>$mar['lon']); $markers[] = $json; } } $points = array(markers=>$markers); echo json_encode($points);

сама форма-

я понимаю, почему они не выводится, так-как в обработчике формы нет вывода карты, но если я туда что-либо добавляю, то он не работает.

выгрузка карты- ymaps.ready(init);

    //Определение начальных параметров карты
    function init () {
        var myMap = new ymaps.Map("map", {
                center: [55.035130661714284, 82.89889020518926], 
                zoom: 10
            }, {
                balloonMaxWidth: 600
            });

        //Добавляем элементы управления 
        myMap.controls                
            .add('zoomControl')                
            .add('typeSelector')                
            .add('mapTools');

        //Запрос данных и вывод маркеров на карту
    $.getJSON("vivodpointsmap.php",
    function(json){
            for (i = 0; i < json.markers.length; i++) {

                var myPlacemark = new ymaps.Placemark([json.markers[i].lat,json.markers[i].lon], {
                // Свойства
                iconContent: json.markers[i].icontext, 
                hintContent: json.markers[i].hinttext,
                balloonContentBody: json.markers[i].balloontext                   
                }, {
                // Опции
                preset: json.markers[i].styleplacemark                  
            });

            // Добавляем метку на карту
            myMap.geoObjects.add(myPlacemark);

        }

    }); 
    } 
1 комментарий
MySQL,Метки
Ставить метки из Базы Данных MySQL
khomchanovsky
17 марта 2015, 12:43

Добрый день!Появился вот такой вопрос:

Есть файл excel с названием объектов (где должна быть метка), парой координат (долгота и широта) и типом (т.е. острова,города,достопримечательности и прочее). Тип определен для списка.

Можно ли чтоб эти метки подгружались к карте не из js файла, а из базы данных (по-поводу создания базы данных знаю только что excel файл можно сохранить в csv формате и подгрузить через phpMyAdmin - с этим,кстати тоже появились проблемы - таблица собралась,но данные отображены некорректно (я так понимаю проблемы с кодировкой и разделителями) - но это уже другой вопрос! Сейчас интересно именно про подгрузку данных на карту из БД. Если возможно буду разбираться дальше.

Спасибо за любую помощь!

2 комментария
MySQL,API 2.1,geoQuery
Удаление метки
wiki@svrt.ru
25 января 2015, 14:13

Для добавления меток я использовал вот этот метод:

http://webmap-blog.ru/yandex-maps/yandeks-karta-na-vashem-sajte-s-vozmozhnostyu-dobavleniya-metok-polzovatelyami-api-yandeks-kart-v2-x-prodolzhenie

Что и где нужно добавить, чтобы удалить метку?

Я нашёл пример, где при клике по метке появляется ссылка "удалить".

Я смог добавить в каждую метку ссылку на удаление:

                    balloonContentBody: '<a href="#" class="btn btn-warning">удалить метку</a>'

Но этот метод не подходит, т.к. у меня должна остаться в каждой метке своя индивидуальная ссылка.

А ссылка/кнопка удаления тогда должна появляться при клике правой мышкой или пусть будет вообще отдельная кнопка удаления на форме для выбранной метки.

4 комментария
MySQL,PHP,API 2.1,метка
LoadingObjectManager серверная часть с использование MySQL + PHP
losangelescarroll
2 января 2015, 12:53

В базе данных имеется таблица точек с координатами вида 'POINT(X Y)',0

Как составить MySQL-запрос, который извлечёт все записи из этой таблицы с точками, которые входят в область видимости этой карты?

1 комментарий
MySQL,PHP,API 2.1,менеджер объектов
Не нашел в документации
Удалённый пользователь
2 декабря 2014, 23:24

В разделе недвижимость сайта яндекса есть удобная опция, поиск объектов по произвольно выделенной области. Я хочу создать свою базу объектов. Могу ли я как то организовать подобный поиск у себя на сайте? Если могу то как? Подскажите пожалуйста.

5 комментариев
MySQL,spatial extensions,API 2.1,менеджер объектов
Mysql и яндекс.карты. Поиск точек в полигоне.
Удалённый пользователь
26 июня 2014, 15:52

Доброго времени суток.

Прошу указать на ошибку тем, кто использовал мускул для указанной задачи:

Mysql Server version: 5.5.17-log

Делаю совершенно валидный запрос!

SET @poly ='Polygon((51.5979158591112 45.935922602537815,
51.58807913534905 46.08852956664947,
51.53543769673961 46.06741521728455,
51.49430912640296 45.93386266601537,
51.5979158591112 45.935922602537815))';# MySQL returned an empty result set (i.e. zero rows).

SELECT AsText(geopoint) FROM items_copy WHERE MBRWithin(GeomFromText(@poly),geopoint)

 

Извлекает 0 записей (их должны быть десятки как минимум), хотя в таблице есть в частности точка:

[51.523399353027344,46.00699996948242]

Когда вывожу её метку на сайте, она находится ровно внутри многоугольника указанного.

 

Прошу указать на ошибку. Функции

MBRContains и Contains также пробовал. Результат тот же 0 строк.

 

11 комментариев
MySQL,полигон
Проверить вхождение тысяч точек в сотню полигонов
Sonic-Sanka
16 апреля 2014, 09:15

Доброго времени уважаемые пользователи!

Подскажите пожалуйста алгоритм решения следующей задачи: имеются записи в бд (id, name lat, long) в размере 12000. На карте имеется порядка 100 полигонов.

Нужно: присвоить каждую точку одному из полигонов (они все граничат друг с другом, но не пересекаются) и записать id этого полигона в эту точку.

Как я вижу решение: запулить все записи в yml файл и запустить цикл нахождения вхождения точки в полигон (берем точку, пробегаем по массиву полигонов до первого вхождения), затем ajax обновляем точку.

Я не гуру в YM возможен ли такой алгоритм? Или есть другой способ? Если первое, то каким образом я могу доставать по одной точке из большучего файла xml?

 

Или воспользоваться функцией из поста http://clubs.ya.ru/mapsapi/replies.xml?item_no=10675 :

function inPolygon (polygon, point) {
var c = 0;

for (var i = 0, points = polygon.getPoints(), j = points.length - 1; i < points.length; j = i++) {
if ((((points[i].getLat() <= point.getLat()) && (point.getLat() < points[j].getLat())) || ((points[j].getLat() <= point.getLat()) && (point.getLat() < points[i].getLat()))) &&
(point.getLng() > (points[j].getLng() - points[i].getLng()) * (point.getLat() - points[i].getLat()) / (points[j].getLat() - points[i].getLat()) + points[i].getLng())
) {
c = !c;
}
}
return c;
}

и использовать ее вне карты?

2 комментария
MySQL
массовое получение координат
Павел Васин
11 февраля 2014, 08:24

всем привет

подскажите = как решить такую задачу: в базе данных есть около 2000 адресов, которые нужно визуально отобразить на карте

существует ли возможность с помощью API получать координаты непосредственно из адреса?

или придется вручную вычислять координаты для каждого адреса?

7 комментариев
MySQL,PHP,геокодирование
Клик по карте работа с координатами
bbshell
6 февраля 2014, 10:57

 

Кликнув на любое мество на карте я получаю координаты клика:

var center = e.get("coords"); // Эти координаты я использую для обратного геокодирования, геокодер воозвращает результат res.geoObjects, я беру первый результат res.geoObjects.get(0) и считываю адрес var address = res.geoObjects.get(0).properties.get('name')

сдесь я строю GET запрос в базу

 

$.get("/ajax/target.php", {address: address}, function(data) {

   alert(data) // Пример результата: В этом здании 45 организации

}) // Я считаю что данная логика не правильна

 

Как в php работать с координатами? точнее как правильно сформулировать запрос в БД типа WHERE lat = $lat, lon = $lon //Этот метод я пробовал но загвозка в том что пользователь может ткнуть в край здания и как правило меняется lat lon может есть какое то готовое решение? Или в какую сторону копать? 

1 комментарий
MySQL,PHP,координаты,API 2.0,геокодирование
Проверить, принадлежит ли точка окружности
money-zlo
6 декабря 2013, 15:07

Предупрежу сразу, с координатами столкнулся впервые) Задача у меня крайне проста - определить, входит ли точка в окружность на карте. Средствами YAPI это слеть легко, в песичнице есть простой пример. А как такой же расчет реализовать средствами других языков программирования? 

 

Сначала я думал, что все легко. Есть точка (X,Y), есть центр окружности (X1,Y1), простой формулой проверяю, входит ли точка в оуружность

(x-x1)^2 + (y-y1)^2 <= R^2, где R - радиус окружности. Радиус не нужен был крайне точным, по картам провел линейкой 1км, координаты сдвинулись на 0,032 градуса. Эту величину и подставлял в R, из расчета что 0,0132 градуса = 1км. Обрадовался, напился.


Далее возникла проблема. В выборку попадали точки и окружности, которые по идее не должны в нее попадать. И попадали очень странно, только когда точка СВЕРХУ круга. Начал курить далее. Провел по ссвоему супер способу линеечку вверх, и увидел, что по оси Y одному километр - это примерно 0,009 градусов. Сразу же дошло, что наша планетка Земля в развернутом виде в ширину больше, чем в высоту, и мой "круг" для карты - это огромный овал. Оттуда и правило - не считай километры по градусам, ибо это быдлокод и повод для насмешек.


Собственно теперь возникла проблема, как найти точку на карте, которая принадлежит кругу, или как работает функция, которая высчитывает вхождение, как например тут 


Нашел коммент с формулой на MySQL, но, во-первых, не пойму, то ли это, во-вторых, непонятны некоторые переменные в запросе

6 комментариев
MySQL,координаты,круг
Выборка геообьектов в области (прямоугольник) на стыках положительных и отрицательных координат.
anti_KILLER
30 ноября 2013, 16:26

Приветствую. У меня есть задача - вывести все геообьекты в видимой области карты. Сами нужные геообьекта уже хранятся в БД. На сервер я отправляю текущий zoom  (нужен для фильтрации обьектов) и координаты видимой области (метод getBounds() карты).
На сервере я делаю выборку примерно таким sql запросом:

 

SELECT * FROM table WHERE pos1 between ? and ? AND

                                                pos2 between ? and ?
Всё работает хорошо до тех пор, пока не встречается область содержация отрицательные геоординаты. Например есть обьект Япония  - координаты 36.084019, 139.198506. Если у нас область с bounds:
bounds [0][0] 18.482050970110727
bounds [0][1] 118.0743365962805
bounds [1][0] 47.18077880536414
bounds [1][1] 175.73058659628046,
то всё нормально.

Однако, сместив карту чуть восточнее мы получим такую область:
bounds [0][0] 13.295487860148489
bounds [0][1] 125.28136784628049
bounds [1][0] 43.398477486772904
bounds [1][1] -177.0623821537195
и в эту область, уже Япония не выбирается sql запросом, хотя на карте эту точку видно.
Если брать значения по модулю, то начнутся аналогичные проблемы с западной европой (обьекты будут не видны) при переходе области за нулевой меридиан. Если же не брать значения по модулю, то в западной европе всё нормально, но проблема на востоке.

Подскажите пожалуйста как корректно сделать выборку из БД, чтобы не было подобных "глюков". Мне на ум приходят только костыльные решения разной степени бредовости, типа определенения с какие именно стороны земного шара попадают в область и в зависимости от этого брать значения по модулю или не по модулю. Но мне кажется что умные люди до меня уже решили эту проблему нормальным способом, просто мне наяндексить это решение не удалось.
Спасибо.

2 комментария
MySQL,координаты
Базы данных с координатами
sergei.murko
27 ноября 2013, 20:46

И все таки думаю спросить у специалистов о хранении координат в БД!
В голову пришлоdecimal(9,6)
Подумав, что отсеивать по координатам будет сложно(не уверен в этом)

Решил создать поле city! В которую занести код города! Прогнав таблицу допустим из 100 000 записей! Он отсеит быстрей сперва по городу потом уже по координатам!
Возможно я ошибаюсь!

Если это так, то geocode c условием kind не подойдет т. к. рядом много с городами поселков, которые отпадут при запросе!
Как все таки хранить координат в БД?

8 комментариев
MySQL,координаты
Какие поля надо создавать для записи точек в бд
bratyxa-servis
19 января 2013, 01:48

Привет все. У меня вопрос -какую именно полне надо создать для записи в бд долготу и широту.Зарание большое спасибо

1 комментарий
MySQL
Берет ли API данные из MySQL?
Мошиков Владислав
5 января 2013, 12:47

И если ДА, то как?

5 комментариев
MySQL,API 2.0
Вывести метки на карту из БД MySql
dmitrij.roganov
8 мая 2012, 15:42

Добрый день.

Подскажите, как вывести метки на карту из БД.

Вот структура таблицы, в которой хранятся метки

 

 CREATE TABLE IF NOT EXISTS `point`(
                                   `id_point` INT(3) NOT NULL AUTO_INCREMENT,
                                   `name_point` VARCHAR(50),
                                   `description` VARCHAR(150),
                                   `id_city` INT(3) NOT NULL DEFAULT 0,
                                   `id_group` INT(3) NOT NULL DEFAULT 0,
                                   `latitude` VARCHAR(10) DEFAULT NULL,
                                   `longitude` VARCHAR(10) DEFAULT NULL,
                                   PRIMARY KEY(`id_point`),
                                   KEY (`id_group`),
                                   KEY(`id_city`)
                                   )ENGINE=MyISAM DEFAULT CHARSET=utf8;

 С самим выводом информации из базы проблем нет, а вот как это всё разместить на карте?

15 комментариев
MySQL,метка
Ошибка кодировки?
yacenturion
8 февраля 2011, 10:09

Добрый день.

Понадобилось обработать около сотни адресов, нашел стью про

"получения координат для списка адресов"

http://ymapsapi.ya.ru/replies.xml?item_no=81

и получил вот такой результат:

??????, ??. ???? ????????, 16ошибка
?????-?????????, ???????????? ??????????, 44ошибка
????????????, ??. ?????????, 10ошибка
???????????, ??. ????????????, 35ошибка
??????, ??. ????????????? 6, 11ошибка
????, ??. ????????????, 4ошибка
??????, ??. ????????, ??? 4-?ошибка
???????????, ??. ?????? ??????????, 6/13ошибка
???????????ошибка

 

Всего обработано адресов: 9
Не удалось прогеокодировать: 9
игрался с кодировками
в базе - не помогло.
Кто-то можете подсказать в чем проблема?

 

12 комментариев
MySQL,поиск ошибок
How to use MySQL Spatial Extensions
dimik
9 января 2011, 16:41
Небольшое руководство по использованию расширения для MySQL для работы с геоданными

Читать далее

2 комментария
MySQL