在第0.7.3版中,我使用layer.bindPopup
中的onEachFeature
使用geoJson数据的属性构建了自定义弹出窗口。但是,我也尝试在layer._leaflet_id = feature.properties.fid
中使用onEachFeature
,以便利用一个函数在带有外部控件的功能之间移动。
此功能(下面的代码摘录中的clickOnMapItem
)有效,我打算通过地图外部的NEXT和PREVIOUS按钮来使用它。
但是,在layer._leaflet_id = feature.properties.fid
中包含onEachFeature
之后,将不再显示弹出窗口。如何在onEachFeature
内成功完成两项任务?
我在下面提供了代码摘录。
function onEachFeature(feature, layer) {
layer.bindPopup('<b>Location: </b>' + feature.properties.name);
layer.on({
click: getName
});
//including this next line seems to prevent the popups
layer._leaflet_id = feature.properties.fid;
}
function clickOnMapItem(itemId) {
var id = parseInt(itemId);
//get target layer by it's id
var layer = geojson.getLayer(id);
//fire event 'click' on target layer
layer.fireEvent('click');
}
function getName(e) {
//info.update is a function used to populate an external div
info.update(e.target.feature.properties);
}
答案 0 :(得分:0)
请勿使用def tf_zero_pad_columns(tensor, columns_list, num_output_columns):
assert(tensor.shape.as_list()[1] == len(columns_list))
assert(num_output_columns >= len(columns_list))
tensor = tf.transpose(tensor)
columns = tf.constant(np.array([columns_list]).T.astype('int32'))
tensor_shape = tf.shape(tensor)[1]
scattered = tf.scatter_nd(columns, tensor, shape=(num_output_columns, tensor_shape))
return tf.transpose(scattered)
它是传单的内部内容,您将找不到有关它的任何文档。
对于您要实现的目标,我不会使用_leaflet_id
打开弹出窗口。有一种方法fireEvent('click')
。
答案 1 :(得分:0)
layer._leaflet_id = feature.properties.fid;
问题的确切原因仍然未知(正如YaFred指出的那样,它在Leaflet内部,因此没有支持文档),但是我确实发现了一种替代解决方案,希望对其他人有所帮助。 / p>
我使用layer._leaflet_id = feature.properties.fid;
代替了layers[feature.properties.fid] = layer;
,之前基于this的答案调用过var layers = {};
。我已经包括了更新的代码摘录,该代码摘录构建了可用于滚动浏览图层的“下一个”和“上一个”功能。
var currentPhoto;
var layers = {};
function onEachFeature(feature, layer) {
layer.bindPopup('<b>Location: </b>' + feature.properties.name);
layer.on(
"click",function(e){getName(e);
currentPhoto = parseInt(layer.feature.properties.fid);
});
layers[feature.properties.fid] = layer;
}
// call from outside map
function highlightFeature(fid){
layers[fid].fireEvent('click');
}
$('#prev').click(function() {
highlightFeature(currentPhoto-1);
});
$('#next').click(function() {
highlightFeature(currentPhoto+1);
});
function getName(e) {
//info.update is a function used to populate an external div
info.update(e.target.feature.properties);
}