JQuery:如何使用json

时间:2018-06-05 16:50:25

标签: php jquery json leaflet marker

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

json示例:

  

{" ID":" 1""经度":" 8.1876""纬度&#34 ;: " 50.1297""名称":"莱茵兰普法尔茨"}

(背景信息:这来自一个PHP文件,它从数据库中提取数据,每10秒更新一次当前位置)

jquery代码:它在我的html和" get_marker"上创建地图。点击事件它启动ajax,它每隔10秒从我的.php文件中拉出一个新的json

$(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中可以正常工作。

1 个答案:

答案 0 :(得分:0)

我认为你过度思考浮点问题。试试这个更简单的方法:

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

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