当前位置: 首页 > 知识库问答 >
问题:

在Firefox中解析本地文件时在geoJSON上得到“格式不正确”

周泰
2023-03-14

我正在使用jquery解析geoJSON文件,并试图将解析后的geoJSON数据添加到回调中的传单映射层。我在geoJSON文件中遇到了“格式不正确”的错误。我已经将geoJSON文件内容通过geoJSON在线lint检查器,它检查良好(http://geojsonlint.com/).在调用$之前,我已设置了预期的mime类型。ajax()(并检查文件是否确实是那种mime类型(utf-8)。我一点也不确定为什么它会告诉我它的格式不好。我在尝试做$的时候也会变得“不成熟”。文件上的getJSON()。我知道这与文件解析有关,因为如果我将数据直接放入脚本中的变量中,然后执行“L.geoJson(data,{}).addTo(map1);”那就行了。

以下是geoJSON文件的内容:

{
    "type":  "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    97.971119, 
                    45.903952
                ]
            },
            "properties": {
                "title":  "Location in Mongolia",
                "address":  "plains of Mongolia"
            }
        }
    ]
}

以下是相关代码:

        $.ajaxSetup({
            scriptCharset: "utf-8",
            contentType: "application/json; charset=utf-8"
        });
        //style: myStyle
        $.ajax('SimplestExampleGeoJSON.geojson').done(function(data) {
          L.geoJson(data, {

          }).addTo(map1);
        });

共有3个答案

米楷
2023-03-14

我自己也遇到了这个问题(完全相同——使用带有GeoJSON文件的传单)。我找到了一个比重写代码简单得多的解决方案。如果你只是重命名你正在读取的文件,*。geojson*。json,它工作得很好。例如,这段代码不会引发解析错误:

$.getJSON({
    url: "./static/boundaries/admin1_us.json",
}).done(function(admin1USGeoJSON) {
    // load state polygons, set style and interactive functions
    usGeoJSON = L.geoJson(admin1USGeoJSON).addTo(usMap);
});

但是,如果文件名为admin1\u us。geojson,Firefox抛出XML解析错误。

鄂昌胤
2023-03-14

好的,这解决了这个问题(在这个链接的帮助下,必须混合两个答案才能工作:“格式不好”警告,当通过jQuery.ajax在Firefox中加载客户端JSON时)。问题是特定于Firefox的。ajax与本地文件和mime类型有关。这是给你的零钱。ajax使其与Firefox配合使用:

               $.ajax({
                  url: "SimplestExampleGeoJSON.json",
                  beforeSend: function(xhr){
                    if (xhr.overrideMimeType)
                    {
                      xhr.overrideMimeType("application/json");
                    }
                  },
                  dataType: 'json',
                  data: null,
                  success:  function(data, textStatus, request) {
                    L.geoJson(data, { }).addTo(map1);
                  }
                }); 
诸葛文博
2023-03-14

当您通过jQuery的$. ajax方法加载JSON文件时,您会在回调参数中得到一个字符串

因此,在传单L.geoJson可以使用它之前,您需要先解析它,将其转换为JSON对象。

$.ajax('SimplestExampleGeoJSON.geojson').done(function(data) {
  data = JSON.parse(data); // Convert string into JSON object.

  L.geoJson(data).addTo(map1);
});

演示:http://plnkr.co/edit/sQ70DNH1bALEPmUgjBLw?p=preview

 类似资料:
  • 问题内容: 我使用jQuery Ajax,如下所示: 即使我没有在Chrome中设置dataType,它也能很好地工作,但是,它在FF中失败,并带有XML解析错误。 响应Headersview源 服务器Apache-Coyote / 1.1 传输编码大块 数据日期,星期二,2011年10月4日00:08:08 GMT 请求Headersview源 主机localhost:8080 用户代理Mozi

  • 我想在本地格式化Jenkins文件,并了解它们是否存在任何格式化问题。我使用Supreme编辑器进行编辑。有没有更好的编辑器也可以向我建议任何格式错误?我不想使用任何在线格式化工具。

  • 我有以下错误:错误:(2)解析XML时出错:格式不正确(无效令牌) 错误:任务执行失败:应用程序:进程DebugResources。 com.android.ide.common.process.ProcessExcture:org.gradle.process.internal.ExecExc0019:进程'命令'E:\AndroidSdk\sdk\build-ols\23.0.2\aapt.e

  • 给定: 和输出: ...要打印秒的图案是什么?这个问题很蠢,但让我有点发疯 我需要:

  • 本文向大家介绍IOS 简单的本地json格式文件解析的实例详解,包括了IOS 简单的本地json格式文件解析的实例详解的使用技巧和注意事项,需要的朋友参考一下 IOS 简单的本地json格式文件解析的实例详解 ljweibo.json文件 解析 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 我想得到英国的区域地图,http://en.wikipedia.org/wiki/Regions_of_England,以GeoJSON格式在网站的web访问地图上使用它。是否有任何地方可以通过GeoJSON格式获取不同国家的数据?