leaflet ajax geojson,GitHub - calvinmetcalf/leaflet-ajax: plugin for leaflet for ajax

leaflet-ajax

68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652532307374796c652d73656d697374616e646172642d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265

Allows you to call JSON via an Ajax call with a jsonp fallback.

var geojsonLayer = new L.GeoJSON.AJAX("geojson.json");

for jsonp add the option "dataType" and set it to "jsonp"

var geojsonLayer = L.geoJson.ajax("http:webhost.fake/geojson.jsonp",{dataType:"jsonp"});

Note that data starts to download when the layer is created NOT when it’s added to the map in order to get a head start.

You may pass either a url string or an array of url strings if you want to download multiple things (handy

if your downloading data from an ESRI based thing which will have separate line, point, and poly features).

As you see you can also use lower case methods without creating new objects

For weirder jsonp you can set "callbackParam" for if you need to change the name of the callback parameter to something besides "callback", e.g. Mapquest Nominative Open uses "json_callback" instead of "callback".

If you want to be able to load stuff from the file system (with appropriate custom flags set) set local to true.

If you want to set headers to the XMLHttpRequest set the 'headers' option equal to an object.

Gives off three events data:loading, data:progress and data:loaded.

data:loading fires before we start downloading things, note if the constructor is given a url it won't wait to be added to the map

to start downloading the data, but it does do an async wait so you have time to add a listener to it (and so leaflet.spin will work with it).

data:progress is called each time a file is downloaded and passes the downloaded geojson as event data.

data:loaded is called when all files have downloaded, this is mainly different from data:progress when you are downloading multiple things.

You can also add a middleware function which is called after you download the data but before you add it to leaflet:

var geojsonLayer = L.geoJson.ajax("route/to/esri.json",{

middleware:function(data){

return esri2geoOrSomething(json);

}

});

addUrl does not clear the current layers but adds to the current one, e.g.:

var geojsonLayer = L.geoJson.ajax("data.json");

geojsonLayer.addUrl("data2.json");//we now have 2 layers

geojsonLayer.refresh();//redownload the most recent layer

geojsonLayer.refresh("new1.json");//add a new layer replacing whatever is there

last but now least we can refilter layers without re adding them

var geojsonLayer = L.geoJson.ajax("data.json");

geojsonLayer.refilter(function(feature){

return feature.properties.key === values;

});

Behind the scenes are two new classes L.Util.ajax = function (url) for same origin requests and L.Util.jsonp = function (url,options) cross origin ones. Both return promises, which have an additional abort method that will abort the ajax request.

L.Util.ajax("url/same/origin.xml").then(function(data){

doStuff(data);

});

//or

L.Util.jsonp("http://www.dif.ori/gin").then(function(data){

doStuff(data);

});

In related news L.Util.Promise is now a constructor for a promise, it takes one argument, a resolver function.

Some of the jsonp code inspired by/taken from this interesting looking plugin that I have failed to make heads nor tails of (the plugin, not the jsonp code)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值