@onahapa

Как вывести данные на openstreetmap?

Всем привет.
Есть таблица в которую добавляются координаты на карте, которые я получаю при клике по карте. Теперь мне нужно их вывести на карту, как я понял, путем добавления маркеров на карту, так как мне вытащить эти координаты и добавить их на карту используя JS?
  • Вопрос задан
  • 798 просмотров
Пригласить эксперта
Ответы на вопрос 3
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Записать эти данные в процессе формирования страницы в элемент script.
Либо в виде массива, просто перечислив объекты с координатами и прочим, либо объект, в ключи которого записать эти самые объекты. Ключи во втором варианте — id объектов из таблицы, например.

Или получить на клиенте эти данные, сделав AJAX-запрос на сервер, а данные в том же виде (но в нотации JSON) приходят на клиент. Посылать запрос, например, по клику на какой-то элемент.

Когда их добавлять на карту в первом случае — вам решать. Во втором случае вроде очевидно — после их получения.
Ответ написан
vyshkant
@vyshkant
developer
Конкретно по Openstreetmap ничего не скажу, но по механизму в целом:
1) Храните данные о маркерах в базе
2) При клике на карту вытягиваете информацию об определенных (всех, или соответствующих вашему критерию) маркерах из базы. Вытягиваете посредством AJAX-запроса из JS на сервер, который и вернет нужные вам данные.
пример того, как это может происходить:
$('#map').click(function() {
    $.ajax({
        type: 'POST',
        url: 'path_to_your_script',
        success: function(data) {
            markers = $.parseJSON(data);
            // далее делаете с вашим массивом markers всё что хотите
        }
    });
});

При этом на сервере вы запрашиваете маркеры из базы, и передаете их в JS:
// в переменную $markers предварительно помещаете массив ваших маркеров
echo json_encode($markers);
Ответ написан
вот как делаю я
$.ajax({
    type: "post",
    url: "адрес где формируется массив на php, который переводим в формат json json_encode()",
    dataType: 'json',
    data: "передаем нужные параметры по которым делается выборка",
    success: function(html){
        if((html!==0)||(html!=="Error")){
              try{
                    for(j=0;j<html.length;j++){
                           markers[j] =L.marker([parseFloat(html[j].Lat),parseFloat([j].Lon)]).addTo(maps)
                    }                       
              }
               catch(e){}
         }
      }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы