【发布时间】:2016-02-19 20:33:18
【问题描述】:
我希望创建一个传单地图网站:
- 获取参数(日期范围)并按下按钮
- 执行 SQL 查询
- 构建查询结果的 GeoJSON 提取
- 在传单地图上显示生成的标记
我的前三个步骤正常工作,但无法将结果添加到现有地图(底图有几个 kml 图层和使用杂食动物的叠加层,我希望在有或没有查询数据的情况下都可用)。
这里是 HTML
<input id="txtStartDate" type="text" class="date-picker/>
<input id="txtEndDate" type="text" class="date-picker/>
<input type="button" id="btnMapIt" value="Map Values" class="btn"/>
<div id="map"></div>
这里是 jQuery / JavaScript
$(document).ready(function () {
// Layer Groups
var layerCityBoundary = new L.LayerGroup();
var layerCityRoads = new L.LayerGroup();
// All KML Layer Group (details not reallt important - it works!)
loadKMLData(layerCityBoundary, 'kml/city_boundary.kml');
loadKMLData(layerCityRoads , 'kml/city_roads.kml');
// Map Layers
var mbAttr = 'Map data ©',
mbUrl = 'https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpandmbXliNDBjZWd2M2x6bDk3c2ZtOTkifQ._QA7i5Mpkd_m30IGElHziw';
var grayscale = L.tileLayer(mbUrl, { id: 'mapbox.light', attribution: mbAttr }),
streets = L.tileLayer(mbUrl, { id: 'mapbox.streets', attribution: mbAttr });
var map = L.map('map', {
center: [45, -80],
zoom: 12,
layers: [streets]
});
var baseLayers = {
"Streets": streets,
"Grayscale": grayscale
};
var overlays = {
"City Boundary": layerCityBoundary ,
"City Streets": layerCityRoads
};
L.control.layers(baseLayers, overlays).addTo(map);
//******************************************************************
// Search Button Press
//******************************************************************
$('#btnMapIt').click(function () {
var startDate = $('#txtStartDate').val();
var endDate = $('#txtEndDate').val();
// Run Data Handler Query
$.ajax({
url: "queries/dhGetMapPoints.ashx",
contentType: "application/json; charset=utf-8",
cache: false,
dataType: "json",
data: {
dStartDate: startDate,
dEndDate: endDate
},
responseType: "json",
success: function (geojson) {
L.geoJson(geojson, {
onEachFeature: function (feature, layer) {
layer.bindPopup(feature.properties.name);
}
}).addTo(map);
},
error: function () {
alert('ERROR.');
},
});
});
});
但是,如果说地图已经绘制,我会遇到问题。如何从现有地图中添加(并删除任何现有的)图层(但仍保留覆盖图层)?
【问题讨论】:
标签: javascript jquery leaflet geojson