JQuery:如何使用来自 json 的坐标添加传单标记

JQuery: how to add a Leaflet marker with Coordinates from json

我在使用 json 数组的坐标在传单地图上创建标记时遇到问题。

json 示例:

{"id":"1","longitude":"8.1876","latitude":"50.1297","name":"Rhineland-Palatinate"}

(背景信息:这来自一个 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 坐标获取实际标记。我的地图上没有显示任何内容。

我尝试使用 json.longitude/json.latitude 访问 long 和 lat 值,然后将它们转换为 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 中工作正常。

我认为您对浮点数问题想得太多了。试试这个更简单的方法:

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

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