【问题标题】:loading external geojson file into leaflet map by using leaflet ajax使用传单 ajax 将外部 geojson 文件加载到传单地图中
【发布时间】:2016-11-16 15:45:54
【问题描述】:

我正在尝试使用传单 ajax 加载外部 geojson。 我认为geojson的结构是真的。这是它的link。 这是我基于HERE所做的:

在头脑中:

<script src="../external/js/leaflet.js"></script>
<script src="../external/js/leaflet.functionaltilelayer.js"></script>  
<script src="../external/js/leaflet.ajax.min.js"></script> 

在javascript中:

var mymap = L.map('mapid',{ center: new L.LatLng(the_center_splitted[0],the_center_splitted[1]),maxZoom: 17, minZoom:11, zoom: 14}); //creating the map

var gs = new L.TileLayer('../external/maps/qom/gs/gs_{x}_{y}_{z}.jpg', {opacity:    1,scheme: 'TMS'}).addTo(mymap); //loading image layer

var geojsonLayer = new L.GeoJSON.AJAX("../external/map/qom/geojson/qom.geojson");

geojsonLayer.addTo(mymap);

但是 geojson 文件没有显示,我得到这个错误: naught TypeError: L.GeoJSON.AJAX 不是构造函数
如果有人可以提供帮助,我将不胜感激。 谢谢你。

【问题讨论】:

标签: ajax leaflet


【解决方案1】:

什么是“functionaltilelayer.js”?在代码片段中,您不需要它。 并且var gs = new L.tileLayer 具有较低的 t - 更改它并再试一次!

<script src="../external/js/leaflet.js"></script> 
<script src="../external/js/leaflet.ajax.min.js"></script> 

var mymap = L.map('mapid',{ center: new L.LatLng(the_center_splitted[0],the_center_splitted[1]),maxZoom: 17, minZoom:11, zoom: 14}); //creating the map

var gs = new L.TileLayer('../external/maps/qom/gs/gs_{x}_{y}_{z}.jpg', {opacity:    1,tms: true}).addTo(mymap); //loading image layer

var geojsonLayer = new L.GeoJSON.AJAX("../external/map/qom/geojson/qom.geojson");

geojsonLayer.addTo(mymap);

【讨论】:

  • 我刚刚删除了它并再次尝试了它。没有错误,但是geojson文件中的一些多边形的内容没有显示在地图上。
  • 你能给我们看看geojson文件吗?也许有什么问题?
  • 我刚刚发布了。
【解决方案2】:

您的代码似乎没问题 - 您导入了吗

<script src='leaflet-ajax.js'></script>

如果是,请出示您的完整代码!

【讨论】:

  • 我添加了 。它与 不同吗?
  • 仔细检查您的网络浏览器是否正在加载该文件。使用开发者控制台查找任何网络错误或脚本警告。
  • 我刚刚检查了加载过程,我更正了相对地址,现在我没有像以前这样的错误,但是,我的geojson文件的内容是一些多边形,还没有显示出来!
【解决方案3】:

通过 AJAX 导入文件有点棘手。 首先请记住,您提供 AJAX() 方法的相对路径应该是您的 Geojson 文件应该是从传单-ajax 脚本文件的位置开始的路径。 (因为它在那里完成了 AJAX 调用)。

我会推荐一种不同的方法(没有 AJAX 调用):

您的 GeJson 文件(将其重命名为 gejson.js)应如下所示:

var json = { "type": "FeatureCollection",
             "features": [{ 
             ...

在您的传单 ajax 代码之前导入此文件:

<script src="../../geojson.js" type="text/javascript"></script>

这将使您能够访问一个名为 json 的变量,然后您可以使用该变量在您的层中导入 json 对象:

var geojsonLayer = L.geoJSON().addTo(mymap);
geojsonLayer.addData(json);

【讨论】:

  • 是的,我知道。我提供了另一种解决方法。
  • @henrik 谢谢,但它想使用 *.geojson 文件和 ajax,而不是 js 文件。
  • @henrik 我刚刚测试了你所说的。这是我的 Js 文件。
  • @keloniton 我为你创建了一个代码笔:codepen.io/anon/pen/RoGZYv
  • @henrik 成功了。谢谢。现在,我如何访问每个多边形的属性?例如:“popupContent”:“这是带您穿越市中心的免费巴士。”。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-23
  • 1970-01-01
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多