- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们使用自定义标签代码在 Google map 中添加带有标签的标记,还使用 MarkerCluster 库对标记进行聚类。
我们的问题是标记隐藏了,但标签仍然显示。我们需要修改http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js
同时隐藏“标签”和标记。我一直在尝试找到在 markercluster.js 中添加或删除标签的位置,但没有成功。
这是我们的标签代码:
// Define the overlay, derived from google.maps.OverlayView
function Label(opt_options) {
// Initialization
this.setValues(opt_options);
// Here go the label styles
var span = this.span_ = document.createElement('span');
span.style.cssText = 'position: relative; left: -50%; top: -35px; ' +
'white-space: nowrap;color:#000000;' +
'padding: 2px;font-family: Arial; font-weight: bold;' +
'font-size: 12px;';
var div = this.div_ = document.createElement('div');
div.appendChild(span);
div.style.cssText = 'position: absolute; display: none';
};
Label.prototype = new google.maps.OverlayView;
Label.prototype.onAdd = function() {
var pane = this.getPanes().overlayImage;
pane.appendChild(this.div_);
// Ensures the label is redrawn if the text or position is changed.
var me = this;
this.listeners_ = [
google.maps.event.addListener(this, 'position_changed',
function() { me.draw(); }),
google.maps.event.addListener(this, 'text_changed',
function() { me.draw(); }),
google.maps.event.addListener(this, 'zindex_changed',
function() { me.draw(); })
];
};
// Implement onRemove
Label.prototype.onRemove = function() {
this.div_.parentNode.removeChild(this.div_);
// Label is removed from the map, stop updating its position/text.
for (var i = 0, I = this.listeners_.length; i < I; ++i) {
google.maps.event.removeListener(this.listeners_[i]);
}
};
// Implement draw
Label.prototype.draw = function() {
var projection = this.getProjection();
var position = projection.fromLatLngToDivPixel(this.get('position'));
var div = this.div_;
div.style.left = position.x + 'px';
div.style.top = position.y + 'px';
div.style.display = 'block';
div.style.zIndex = this.get('zIndex'); //ALLOW LABEL TO OVERLAY MARKER
this.span_.innerHTML = this.get('text').toString();
};
function initialize() {
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
setMarkers(map, beaches);
}
google.maps.event.addDomListener(window, 'load', initialize);
var markersArray = [];
var labelsArray = [];
var beaches = [
['Bondi Beach', -33.890542, 151.274856, 4],
['Cronulla Beach', -34.028249, 151.157507, 3],
['Manly Beach', -33.80010128657071, 151.28747820854187, 2],
['Maroubra Beach', -33.950198, 151.259302, 1]
];
function setMarkers(map, locations) {
var image = new google.maps.MarkerImage('marker.png',
new google.maps.Size(100, 39),
new google.maps.Point(0,0),
new google.maps.Point(50, 39));
/* var shadow = new google.maps.MarkerImage('marker-panel.png',
new google.maps.Size(37, 32),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));*/
var shape = {
coord: [1, 1, 1, 20, 18, 20, 18 , 1],
type: 'poly'
};
for (var i = 0; i < locations.length; i++) {
var beach = locations[i];
var myLatLng = new google.maps.LatLng(beach[1], beach[2]);
var marker = new google.maps.Marker({
position: myLatLng,
map: map,
//shadow: shadow,
icon: image,
shape: shape,
title: beach[0],
zIndex: beach[3]
});
var label = new Label({
map: map
});
label.set('zIndex', 1234);
label.bindTo('position', marker, 'position');
label.set('text', beach[0]);
//label.bindTo('text', marker, 'position');
markersArray.push(marker);
labelsArray.push(label);
}
var markerCluster = new MarkerClusterer(map, markersArray);
}
任何人都可以告诉我我应该在 markercluster.js 中更改什么以使其也删除标签吗?
最佳答案
将此添加到 for 循环的末尾:
(function(m,l){
google.maps.event.addListener(m,'map_changed',function(){l.setMap(this.getMap());});
})(marker,label)
当标记被添加到集群或从集群中删除时, map 属性将发生变化。该脚本会将 label
的 map
设置为 marker
的 map
(它与 基本相同code>label.bindTo('map',marker,'map')
,但似乎 bindTo
在这里不起作用。
关于javascript - 使用 markercluster 时从 map 标记中删除标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19391589/
我仅在同一位置的标记上进行聚类(即 maxClusterRadius = 0)。单击集群时,我希望它以特定的缩放级别(不是最大缩放)居中并放大,然后立即 spiderfy。使用以下代码,spiderf
与 Leaflet.Markercluster ,如何检查标记是否在集群中? 最佳答案 使用Leaflet的hasLayer()函数 常规可见标记在技术上作为图层存在于 map 中。 Leaflet
当您放大和缩小时,markerclusters 会自动“重新聚类”,因为它会再次计算聚类。 是否可以选择在更改缩放比例时禁用自动重新聚类? 最佳答案 根据您要实现的目标,您可能会对 Leaflet.M
我正在尝试使用包含纬度、经度、弹出信息和图层定义的多维数组来填充传单 map 。问题是 2 个标记应该去 layer1,另外两个去 layer2。事实上,所有四个标记都属于两个层。感谢您的帮助。 va
我正在使用 Leaflet.markercluster将我的标记聚集在我的 Mapbox Map 中.将使用 json 填充标记。文件。我只需要一个搜索功能,它可以根据搜索字符串弹出必要的标记。我认识
使用Leaflet.markercluster人们可以在example中看到一个不错的动画。 。启用动画,例如: L.markerClusterGroup({ animate: true, a
有没有办法将 onEachFeature 事件(见下文)中通过 .getCenter() 创建的中心点添加到 L.Marker 或类似对象,该对象包含所有创建的中心点该事件可以被 Leaflet.Ma
我正在使用 MarkerCluster 在 folium 中创建传单 map 。我已经查阅了所有文档并搜索了示例,但我无法弄清楚如何为给定的 MarkerCluster 或 FeatureGroup
所以我的 map 上有几家商店作为图层。我的所有商店都已添加到 MarkerCluster,并且该商店已添加到 map ,一切正常。但我想在商店位于我的 viewPort 中时显示有关该商店的简短信息
我试图显示一张 map ,上面有很多标记(~36.000),其中必须包含一些信息。 首先,我从数据库中选择元素,然后使用 PHP 将其编码为 JSON 数组,然后使用 JSS 获取它,最后将其添加到我
我想为我的标记使用自定义图标,同时使用传单 MarkerCluster . 我已经设法实现了我的自定义图标 ,但是 现在标记弹出不再工作了。 我的代码如下所示: var markers1 = new
我目前正在使用外部 geojson 文件作为数据输入的传单项目。由于 json 包含很多对象,我想使用 MarkerCluster我从 Mappbox 得到的插件: 在没有集群的情况下显示 js
首先我使用 JSON//Work 获取车站位置 JSON 结构: [{"number":31705,"name":"31705 - CHAMPEAUX (BAGNOLET)","address":"R
是否有可能在没有用户交互的情况下显示 Markercluster 内的 Leaflet 标记? 现在我正在使用 panTo 方法 ( http://leafletjs.com/reference.ht
我正在使用 github 上的 MarkerCluster_compiled.js。但虽然逻辑有效,但它的图形从昨天开始就开始失效。 问题似乎是由“https://google-maps-utilit
我的情况是我有很多地理数据,其中许多具有相同的纬度和经度。 我想让 MarkerCluster 的 zoomOnClick 处理程序保持事件状态,但是本地图保持放大并获得最大缩放级别时,集群中相同的纬
我有一个 Leaflet + MarkerCluster 应用程序,它在 map 上有一些标记,并在打开与标记关联的弹出窗口时(单击标记时)将图像叠加层添加到 map 的一些逻辑。我使用 bindPo
假设我们有以下 map : https://jsfiddle.net/fcumj09w/5/ 在上面的示例中,我们有 2 个标记集群组(clustRed 和 clustYellow)和这些组之外的单个
我正在尝试选择显示和隐藏带有类别的标记。它工作正常,但如果 map 上有标记簇则无法工作。例如。当我选择 map 上的类别酒吧标记时,类别餐厅消失,但标记簇仍在 map 上。这是我的 intin 函数
我在 python 中使用 folium 包来显示我的数据的 MarkerClusters。 当您没有完全放大时,集群看起来不错,但它们似乎显示该集群内子标记数量的计数。我理解为什么这是默认行为,但出
我是一名优秀的程序员,十分优秀!