Mapbox:打开一个标记's在地图外点击弹出
Mapbox: Open a marker's popup by clicking outside the map
我的代码中有一些div"连接"到了我的映射标记。我的div具有唯一的ID,我的标记具有与属性相同的ID集(标题和标记ID)。当点击div时,有没有办法打开弹出的标记?这是我的代码:
$('#alldealers .dealer').each(function(){
t = $(this).find('h2').text();
lat = $(this).find('.lat');
lng = $(this).find('.lng');
userLng = parseFloat($(lng).text());
userLat = parseFloat($(lat).text());
subUniqueNum = $(this).attr('data-link');
L.mapbox.featureLayer({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [userLng, userLat]
},
properties: {
title: subUniqueNum,
'marker-id': subUniqueNum,
'marker-size': 'small',
'marker-color': '#f85649',
}
}).bindPopup('<button class="giveMeDetails" data-attr-scroll="'+subUniqueNum+'">'+t+'</button>').addTo(map);
});
$('.mapicon_wrapper').click(function(e){
tot_p = $(this).parent().parent().parent().attr('id');//parent wrapper id:same as marker's ID
$root.animate({
scrollTop: $('html').offset().top
}, 500, function () {
// This is where I need to open the markers popup with the same title as $this parent ID (tot_p)
});
});
这种将ID分配给标记并在DOM中调用它的方法是不可靠的:如果标记在当前查看的地图区域之外,它就不会出现在DOM中。正确的方法是
var markerLayer = L.mapbox.featureLayer().addTo(map);
var markers = [];
$('#alldealers .dealer').each(function(){
t = $(this).find('h2').text();
lat = $(this).find('.lat');
lng = $(this).find('.lng');
userLng = parseFloat($(lng).text());
userLat = parseFloat($(lat).text());
subUniqueNum = $(this).attr('data-link');
markers.push({
type: 'Feature',
geometry: {
type: 'Point',
coordinates: [userLng, userLat]
},
properties: {
title: subUniqueNum,
id: subUniqueNum,
t: t,
'marker-size': 'small',
'marker-color': '#f85649',
}
})
});
markerLayer.setGeoJSON(markers);
markerLayer.eachLayer(function (layer) {
layer.bindPopup('<button class="giveMeDetails" data-attr-scroll="'+layer.feature.properties.title+'">'+layer.feature.properties.t+'</button>');
});
$('.mapicon_wrapper').click(function(e){
var tot_p = $(this).parent().parent().parent().attr('id');//parent wrapper id:same as marker's ID
$root.animate({
scrollTop: $('html').offset().top
}, 500, function () {
// This is where I need to open the markers popup with the same title as $this parent ID (tot_p)
markers.eachLayer(function (layer) {
if (layer.feature.properties.id === tot_p) {
layer.openPopup();
}
});
});
});
相关文章:
- 调用一个“;默认瓦片”;在谷歌地图中
- 使用D3.js和GeoJson在地图上的某些坐标上设置一个小图像
- 如何创建一个谷歌地图地理坐标数组
- 寻找一个免费的交互式美国地图与突出显示的州
- 为位于路线上的谷歌地图标记(起点和终点)设置一个信息窗口
- 如何在谷歌地图中突出显示一个州点击一个国家的任何区域
- 必应地图没有'当我向函数添加另一个参数时,t显示
- Mapbox:打开一个标记's在地图外点击弹出
- 我如何创建一个动态地图来显示我们公司的位置
- 使用谷歌地图:一个返回undefined的自定义javascript函数
- 谷歌地图API-获取信息窗口打开时,点击一个圆圈
- 你如何JSON.stringify一个ES6地图
- 无法在一个页面中添加多个谷歌地图
- 在谷歌地图示例中为 Ajax 调用制作一个 JavaScript 闭包
- 在谷歌地图上显示一个标记
- 从模态内部的主体复制一个谷歌地图
- 上一个标记删除在谷歌地图
- 谷歌地图Api v3:点击信息窗口中的按钮时启动一个操作
- json_encode($myVar);正在给出地图,我想要一个字符串数组
- 谷歌地图一个信息框打开