我是传单的新手,但过去曾开发过一些互动地图。我开始在无人机上显示gps设备。无人机在服务器上发送位置信息,并有一个PHP代码,根据相关请求返回一些传感器值(以geojson格式,所以我不必做太多...... phew)。当我遇到leaflet_Ajax.时,我正在寻找一些如何使用Ajax无缝地完成它的解决方案。我遇到了很多问题,主要通过stackoverflow上的一些问题来解决,例如this one和其他一些问题。
现在,我正在编写代码标记的代码:
var geojsonLayer = new L.GeoJSON.AJAX("myserver/get_geoj.php?stype=particle&sval[min]=2&sval[max]=26",{pointToLayer: redmarkers, onEachFeature: popUp});
function popUp(feature, layer) {
layer.bindPopup(feature.properties.sensor_v);
},
我有另一个函数redmarkers返回红色圆圈标记。最后它会从服务器加载数据... phewh ....但它不会将弹出窗口或标记绑定到此层。它在js / images / marker-icon.png中查找(我猜一些)默认标记图像作为标记符号。这不存在,因此它给了我一个错误。但是,如果我拍摄任何随机图像并将其命名为marker-icon.png并将其放在所需位置,则会在地图上显示该图像,但仍然不会绑定弹出窗口。
我做错了什么。因为如果您需要更多信息,或者如果我没有正确地提出问题,我也是新的堆栈溢出请告诉我。
答案 0 :(得分:0)
好吧所以我解决了,但是认为其他人可能会在以后做类似的错误,我应该回答这个问题。
我不知何故不小心编辑了我的leaflet.js文件。我不记得这样做了。我删除了我在js / images文件夹中为marker-icon.png放置的虚拟图像,它仍然显示相同的标记。我意识到它已经缓存了所以我禁用了chache,只是在控制台中意识到错误与leaflet.js有关。我更新了leaflet.js的版本(在我的磁盘上有一个备份副本,因此相同的版本没有更新或其他东西),现在它工作正常。这是我目前的代码
var geojsonLayer = new L.GeoJSON.AJAX(dataurl,{
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, redRegionStyle);
},
onEachFeature: onfeature
});
function onfeature(feature, layer)
{
layer.on(
{
mouseover: highlightFeature,
mouseout: resetHighlight
});
layer.bindPopup(feature.properties.sensor_v.toString());
}
它完美地突出了我喜欢的功能,并且弹出窗口绑定到功能。
对于那些因为提出这个问题而烦恼的人,对不起,因为这是我自己的狡猾的错误