【问题标题】:loadJSON with lat and lon and get the variablesloadJSON 与 lat 和 lon 并获取变量
【发布时间】:2019-12-08 19:55:04
【问题描述】:

我正在加载 JSON 文件,我想从文件中获取纬度和经度变量。 我正在使用 let lat = row.get('lat'); 但它不起作用并且在 const pix = yMap.latLngToPixel(data.lat,data.lon);它说它不认识它。 我怎样才能让它正常工作,因为之后我想从 localhost 获取 json 文件,这就是我使用 p5.js 库的原因。

<title>Mappa </title>

<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.5.16/p5.min.js" type="text/javascript"></script>
<script src="https://cdn.jsdelivr.net/npm/mappa-mundi@0.0.4" type="text/javascript"></script>
<script src="mappa.js" ></script>

Json.file(就像我将从 localhost 获取的那个)

{"conflicts":[
{ "Place":"Afganistan",
"lat":33.0000,
"lon":65.0000 }
,
{"Place": "Koln",
"lat":17.0500,
"lon":-61.8000}
,
 {"Place": "ai",
 "lat":18.2500,
 "lon": -63.166}

  ]
 }
  }

js.file

let data;

let myMap;
let canvas;

const mappa = new Mappa ('Leaflet');

const options = {
lat: 39.074207, 
lng: 21.824312,
zoom: 2,
style: "http://{s}.tile.osm.org/{z}/{x}/{y}.png"
}

function preload(){
data = loadJSON ("conflicts.json");

//var jsonData = JSON.parse(data);

}



function setup(){

canvas = createCanvas(1350,600); 
myMap = mappa.tileMap(options); 
myMap.overlay(canvas);


 let lat = row.get('lat');
 let lon = row.get('lon');

}

 function draw() {
clear();
const pix = myMap.latLngToPixel(data.lat,data.lon);
fill (255,0,200);
ellipse (pix.x,pix.y,20,20); 
}

【问题讨论】:

    标签: javascript json p5.js


    【解决方案1】:

    您的data 是一个具有单个属性的对象,该属性是一个数组。要访问此数组中的每个元素,您需要对其进行迭代:

     for (let item of data.conflicts)
        draw(item)
    
    
     function draw(item) {
        const pix = myMap.latLngToPixel(item.lat, item.lon);
        fill (255,0,200);
        ellipse (pix.x,pix.y,20,20); 
     }
    

    【讨论】:

    • 我用 for 循环和你的解决方案试过这个,但是 const pix = myMap.latLngToPixel(item.lat, item.lon);纬度和经度也有错误。
    • 我这样做了,但又失败了:function setup(){ canvas = createCanvas(1350,600); myMap = mappa.tileMap(options); myMap.overlay(画布); for (let item of data.conflicts){ let lan = conflict.lat;让 lon = 冲突.lon;绘制(项目)}}函数绘制(项目){清除(); const pix = myMap.latLngToPixel(item.lat, item.lon);填充(255,0,200);椭圆 (pix.x,pix.y,20,20); }
    • 如果在draw 中添加console.log(item),它会记录什么?
    • p5.maps 已加载✓ mappa.js:42 {地点:“阿富汗”,纬度:33,经度:65} mappa.js:42 {地点:“科隆”,纬度:17.05,经度:-61.8} mappa.js:42 {地点:“ai”,纬度:18.25,经度:-63.166} mappa.js:42 未定义
    • 但错误在这里:未捕获(承诺中)TypeError:无法读取未定义的属性'lat' at draw (mappa.js:44)
    猜你喜欢
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 2019-05-30
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-22
    相关资源
    最近更新 更多