处理传单地图中的ajax请求
Handling ajax-request in leaflet map
我有一个非常基本的传单地图使用leaflet-panel-layers
创建一个漂亮的图层控件。我有两个函数来创建图层和叠加。我的数据在外部geoJSON文件中,这似乎是我的问题,因为传单没有提供任何东西来获取外部geoJSON。我还使用proj4leaflet
库来使用json中给出的投影。所以谷歌告诉我使用ajax,不幸的是我对此一无所知。我复制粘贴了如下内容:
function getOverlays(){
var url = 'myServerUrl';
overlays = [];
$.ajax({
url: url,
dataType: 'jsonp',
jsonpCallback: 'getJson',
success: function(response) {
overlays.push({
name: "Something",
layer: L.Proj.geoJson(response, {
...
}
});
}
});
return overlays;
}
我的地图是这样构建的:
var map = L.map('map', {
layers: layers[0].layer
});
var layers = getBaseLayers();
var overlays = getOverlays();
var panelLayers = new L.Control.PanelLayers(layers,overlays);
map.addControl(panelLayers);
如果我想直接将图层添加到地图上,这实际上工作得很好。但在我的情况下,异步请求似乎已经准备好后,我的图层切换器被添加到我的地图,所以层不出现在那里。有没有一种方法可以简单地解决这个问题,而不需要使用回调?
在请求完成后添加控件。这可以通过一个回调函数来完成:
function getOverlays(callback){
var url = 'myServerUrl';
overlays = [];
$.ajax({
url: url,
dataType: 'jsonp',
jsonpCallback: 'getJson',
success: function(response) {
overlays.push({
name: "Something",
layer: L.Proj.geoJson(response, {
...
}
});
callback(overlays)
}
});
return overlays;
}
var map = L.map('map', {
layers: layers[0].layer
});
var layers = getBaseLayers();
getOverlays(function(overlays){
var panelLayers = new L.Control.PanelLayers(layers,overlays);
map.addControl(panelLayers);
});
相关文章:
- ajax请求的顺序总是不同的
- 从ajax请求中获取javascript对象
- Ajax请求文档就绪会导致jquery加载缓慢
- MockJax没有在JavaScript应用程序中发送对我AJAX请求的响应
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- JavaScript代码未正确检查ajax请求
- "日期“;AJAX请求返回的类型值未定义
- 在等待ajax请求时显示微调器并禁用页面
- 跨域ajax请求
- Ajax请求返回空的数据字符串,但首先得到了正确的数据
- Javascript-如何让脚本与Ajax请求的数据一起运行
- ajax请求成功,但可以'我看不到我的数据
- 如何将给定的curl命令复制为jquery ajax请求
- 为什么我能够从javascript控制台发送跨域ajax请求
- 一台特定计算机的Ajax请求数据未定义/失败
- 获取ajax请求的请求头
- 原型Ajax请求参数为嵌套json
- 可以't从AJAX请求中筛选数据
- jQuery Mobile Collapse上的AJAX请求
- 暂停函数执行流程,直到ajax请求完成