ajax - AJAX 加载的 GeoJson 数据上的传单 PointToLayer 样式
问题描述
我在修复传单地图上的默认点样式时遇到了一些困难,目前这些点在通过 ajax 加载后出现在正确的位置。
但是当前代码不会改变样式,我只剩下默认的浅蓝色圆圈样式:
function addressStyle(feature) {
return {
color: '#000',
fillColor: '#199900',
fillOpacity: 0.5,
radius: 100,
};
}
var address_points = new L.geoJson('', {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, addressStyle);
},
onEachFeature: function (feature, layer) {
layer.bindPopup('<h1>'+feature.properties.address+'</h1>');
},
});
address_points.addTo(map);
$.ajax({
dataType: "json",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
url: "{{url('/addresses/geojson')}}",
success: function(data) {
$(data.features).each(function(key, data) {
address_points.addData(data);
});
},
error: function(data){
}
});
有没有更好的方法来处理这个?我刚刚开始使用 AJAX 加载相关的 GeoJSON 数据,但是当我对其他不是点的图层没有任何困难时,我被困在如何进行此功能的样式设置上。
解决方案
如果要将样式应用于所有图层(标记除外),请将代码更改为:
var address_points = new L.geoJson('', {
style: addressStyle,
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng);
},
onEachFeature: function (feature, layer) {
layer.bindPopup('<h1>'+feature.properties.address+'</h1>');
},
});
当您只想将样式应用于 CircleMarker 时,您需要将样式作为对象而不是函数传递。
您可以简单地调用 addressStyle 函数:
var address_points = new L.geoJson('', {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, addressStyle());
},
onEachFeature: function (feature, layer) {
layer.bindPopup('<h1>'+feature.properties.address+'</h1>');
},
});
或定义addessStyle
为对象:
var addressStyle = {
color: '#000',
fillColor: '#199900',
fillOpacity: 0.5,
radius: 100,
};
var address_points = new L.geoJson('', {
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, addressStyle);
},
onEachFeature: function (feature, layer) {
layer.bindPopup('<h1>'+feature.properties.address+'</h1>');
},
});
推荐阅读
- python - 在 sympy 中,使用规范交换关系简化表达式
- python - Python3.8(Ubuntu 19.10)中的点子问题
- android - Android kotlin Arraylist 对象获取特定值
- javascript - 使用 Javascript 从 Firebase 检索数据时出错
- java - 如何在Java中等待一个进程
- javascript - 过滤数组并形成新数组
- c++ - 使用类、对象和构造函数 / C++
- c++ - campare 一个长变量,INT_MAX + 1
- javascript - 我可以将反应应用添加到 app.html 而不是 index.html
- excel - 嵌套Excel公式修改问题