需要帮助添加弹出信息窗口到传单地图上的多边形
Need help adding popup info windows to polygons on Leaflet map
我正在尝试将弹出窗口添加到传单地图中,该地图显示不同矿区周围的缓冲区。当我点击缓冲区多边形时,我想得到矿名信息。这是我的代码,
<html>
<head>
<title>Buffer Zones around Mine</title>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.css"/>
<script src="http://cdn.leafletjs.com/leaflet-0.7.3/leaflet.js"></script>
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<style>
#map{ height: 100% }
</style>
</head>
<body>
<div id="map"></div>
<script>
var map = L.map('map').setView([45, -95], 4); //center map view
var CartoDB_Positron = L.tileLayer('http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png', {
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> © <a href="http://cartodb.com/attributions">CartoDB</a>',
subdomains: 'abcd',
maxZoom: 19
}).addTo(map);
// load JSON data
$.getJSON("BufferPolygons.json",function(data){
// add GeoJSON layer to the map once the file is loaded
L.geoJson(data).addTo(map);
});
//get popup info
var myLayer = L.geoJson(polygon, {
onEachFeature: yourOnEachFeatureFunction
}).addTo(map);
function yourOnEachFeatureFunction(feature, layer){
if (feature.properties.mine_name) {
layer.bindPopup(feature.properties.mine_name);
}
}
</script>
</body>
</html>
我是传单和Javascript的新手,任何帮助都将不胜感激!
编辑:当在多边形和非多边形上滚动时,我的光标会发生变化,所以我相信信息是通过鼠标点击来检索的。由于没有显示任何内容,我假设这是HTML/CSS问题,也许我还没有创建任何窗口来查看这些信息?
显示的多边形是在$.getJSON
回调函数中创建的多边形。当您在回调之外定义myLayer
时,它似乎在寻找未定义的polygon
对象,因此永远不会创建层及其弹出窗口。
有几种方法可以解决这个问题。最简单的方法就是为您在回调中创建的L.geoJson
设置onEachFeature
选项:
$.getJSON("BufferPolygons.json",function(data){
L.geoJson(data, {
onEachFeature: yourOnEachFeatureFunction
}).addTo(map);
});
但是,这样做可能无法在其他地方引用该图层(例如,如果要将其添加到图层控件中),因为只有BufferPolygons.json
完成加载后才能创建该图层。在大多数情况下,更好的选择是使用您想要的任何选项创建myLayer
,但不包含任何数据,并使用addData
方法在回调函数中填充此空层:
var myLayer = L.geoJson(false, {
onEachFeature: yourOnEachFeatureFunction
}).addTo(map);
$.getJSON("BufferPolygons.json",function(data){
myLayer.addData(data);
});
相关文章:
- 使用谷歌地图、C#、ASP.net、SQL Server显示带有标记的地图.地图未显示
- 谷歌地图地图;不再加载
- 传单显示悬停时的地图 - 地图加载不正确
- 谷歌地图:地图不扩展边界以查看所有标记
- JavaScript:谷歌地图地图选项
- Esri 地图显示信息窗口,无需单击地图
- 未捕获的类型错误:单击地图时$scope.map.control.getGMap不是一个函数
- 刷新传单地图:地图容器已初始化
- 单击地图(GeoServer 图层)时会显示多个信息框
- 在javascript中动态创建类似的谷歌地图地图控件
- 谷歌地图地图不会显示
- 在地图地图框上放置标记
- 如何移除地图地图控件覆盖
- 如何通过在JavaScript中单击地图来填充字符串数组
- 单击地图标记时平滑滚动
- 当绘图管理器为标记激活时,自动单击地图中心
- 单击地图时关闭信息框
- 通过量角器js将谷歌地图地图向右移动
- 谷歌地图地图只能加载一次
- 如何在单击地图框中的标记时更改标记颜色和图标