JQuery: как добавить маркер Leaflet с координатами из json

У меня проблема с созданием маркера на моей карте листовки с координатами из массива json.

Пример JSON:

{ «ID»: «1», «долгота»: «8,1876», «широта»: «50,1297», «название»: «Рейнланд-Пфальц»}

(справочная информация: это происходит из файла PHP, который выбирает данные из базы данных, которая обновляет текущую позицию каждые 10 секунд)

Код jquery: он создает карту в моем html-файле и после события щелчка get_marker запускает ajax, который извлекает новый json каждые 10 секунд из моего файла .php

$(document).ready(function () {
var map = L.map('map', {
center: [50.0231, 8.8849],
zoom: 9
});
L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(map);

$("#get_marker").click(function(event){
startajax();
alert("get marker clicked");
});

$("#delete_marker").click(function(event){
deletemarkers();
alert("marker deleted");
});

function startajax () {
$.ajax({
url: ('query_fetcharray.php'),
data: {},
type: 'POST',
timeout: 10000,
dataType: 'json',
error: function() {
alert('Error, no Data received!');
},
success: drawmarker
})
};

все выше, кажется, работает нормально
Проблема в том, чтобы получить фактический маркер на карте с координатами JSON. На моей карте ничего не отображается.

Я попытался получить доступ к значениям long и lat с помощью json.longitude / json.latitude, а затем преобразовать их в float =>, а затем сохранить в переменных JS: var longitude.
Затем я положил переменные в L.marker.

мой код:

function drawmarker (json) {
var longitude = parseFloat(json.longitude);
var latitude = parseFloat(json.latitude);

L.marker([longitude, latitude], {
clickable: true
})
.bindPopup('hello')
.addTo(map);
};

Проблема, похоже, является фактическими переменными, поскольку жесткое кодирование набора координат в L.marker работает нормально.

0

Решение

Я думаю, что вы слишком много думаете о проблеме с плавающей точкой. Попробуйте этот более простой способ:

function drawmarker (json) {
var longitude = json.longitude;
var latitude =  json.latitude;

L.marker([latitude, longitude])
.bindPopup('hello')
.addTo(map);
};
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]