我对 javascript 的学习非常陌生,我的基本知识已经碰壁了。我已经设置了一个 Leaflet 地图,我希望从 JSON 中的绳索上绘制基于 divIcon 的标记。通过我无数次尝试让它发挥作用的研究。我了解了为什么我的 JSON 文件不起作用,即使我在控制台中确认它正在被读取。我了解到 Leaflet 更喜欢它在 GeoJSON 中。所以我又花了几个小时研究如何转换它。我的大部分发现已经过时,不再适用或不适用于我。这是我通过严格的研究所做的尝试。
首先,我为我的测试 JSON 文件的路径设置了一个变量,定义如下。
var jsonData = "./data/tracking.json";
Run Code Online (Sandbox Code Playgroud)
在我尝试将 JSON 转换为 GeoJSON 时,我尝试了这个。
var outGeoJson = {}
outGeoJson['properties'] = jsonData
outGeoJson['type']= "Feature"
outGeoJson['geometry']= {"type": "Point", "coordinates":
[jsonData['lat'], jsonData['lon']]}
console.log(outGeoJson)
Run Code Online (Sandbox Code Playgroud)
检查控制台,发现来自 JSON 文件的数组中的坐标未定义。
我对为什么会出现未定义的原因的搜索没有达到。我的理论可能是因为 JSON 在数组之前有一个位置键,而且它是一个数组。我继续寻找可能处理此问题的有效解决方案。我接下来尝试了这个解决方案。
var geojson = {
type: "FeatureCollection",
features: [],
};
for (i = 0; i < jsonData.positions.length; i++) {
if (window.CP.shouldStopExecution(1)) {
break;
}
geojson.features.push({
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": …Run Code Online (Sandbox Code Playgroud)