- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有这张 map ,并根据用户的经度和纬度显示指针。现在我遇到了 OverlappingMarkerSpiderfier 的问题。当有超过 1 个用户具有相同的经度和纬度时。例如:5个人住在同一栋楼里。我需要 OverlappingMarkerSpiderfier 来显示计数,然后单击以 sipderfy 它。默认情况下,OverlappingMarkerSpiderfier 不会以这种方式工作。
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(52, 8),
zoom: 4
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
var oms = new OverlappingMarkerSpiderfier(map,{markersWontMove: true, markersWontHide: true, keepSpiderfied: true});
markerClusterer.setMap(map);
这是 jsfiddle http://jsfiddle.net/gL3L7zso/62/
正如你所看到的,当我点击战场时 3. 它显示 1 个指针隐藏在它后面 3. 我需要它是相同的,但是显示隐藏在后面的指针的计数。
感谢任何解决方案。
更新:使问题更加清晰。
更新了 fiddle :http://jsfiddle.net/gL3L7zso/68
最佳答案
一种选择是在“簇”中的每个标记上放置一个标签,并将最高标记的标记放在顶部。
oms.addMarker(marker);
var markersNear = oms.markersNearMarker(marker, false);
marker.setLabel("" + (markersNear.length + 1));
marker.setOptions({
zIndex: markersNear.length
});
代码片段:
var geoJson = {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"properties": {
"name": "Bielefeld"
},
"geometry": {
"type": "Point",
"coordinates": [8.528849, 52.030656]
}
}, {
"type": "Feature",
"properties": {
"name": "Bielefeld2"
},
"geometry": {
"type": "Point",
"coordinates": [8.528849, 52.030656]
}
}, {
"type": "Feature",
"properties": {
"name": "Bielefeld3"
},
"geometry": {
"type": "Point",
"coordinates": [8.528849, 52.030656]
}
}, {
"type": "Feature",
"properties": {
"name": "Herford"
},
"geometry": {
"type": "Point",
"coordinates": [8.676780, 52.118003]
}
}, {
"type": "Feature",
"properties": {
"name": "Guetersloh"
},
"geometry": {
"type": "Point",
"coordinates": [8.383353, 51.902917]
}
}, {
"type": "Feature",
"properties": {
"name": "Guetersloh2"
},
"geometry": {
"type": "Point",
"coordinates": [8.38, 51.9]
}
}]
};
var map = null;
var bounds = new google.maps.LatLngBounds();
var boxText = document.createElement("div");
boxText.style.cssText = "border: 1px solid black; margin-top: 8px; background: yellow; padding: 5px;";
var infobox = new InfoBox({
content: boxText,
disableAutoPan: false,
maxWidth: 0,
pixelOffset: new google.maps.Size(-140, 0),
zIndex: null,
boxStyle: {
background: "url('tipbox.gif') no-repeat",
opacity: 0.75,
width: "280px"
},
closeBoxMargin: "10px 2px 2px 2px",
closeBoxURL: "http://www.google.com/intl/en_us/mapfiles/close.gif",
infoBoxClearance: new google.maps.Size(1, 1),
isHidden: false,
pane: "floatPane",
enableEventPropagation: false
});
var markerClusterer = new MarkerClusterer(map, [], {imagePath: "https://cdn.rawgit.com/googlemaps/v3-utility-library/master/markerclustererplus/images/m"});
minClusterZoom = 14;
markerClusterer.setMaxZoom(minClusterZoom);
function initialize() {
var mapOptions = {
center: new google.maps.LatLng(52.030656,8.528849),
zoom: 14
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
google.maps.event.addListenerOnce(map, 'idle', function() {
var oms = new OverlappingMarkerSpiderfier(map, {
markersWontMove: true,
markersWontHide: true,
keepSpiderfied: true
});
oms.addListener('unspiderfy', function(spidered, unspidered) {
for (var i = 0; i < spidered.length; i++) {
spidered[i].setLabel("" + (i + 1));
spidered[i].setOptions({
zIndex: i
});
}
});
markerClusterer.setMap(map);
google.maps.event.addListener(map.data, 'addfeature', function(e) {
if (e.feature.getGeometry().getType() === 'Point') {
var marker = new google.maps.Marker({
position: e.feature.getGeometry().get(),
title: e.feature.getProperty('name'),
map: map
});
google.maps.event.addListener(marker, 'click', function(marker, e) {
return function() {
var myHTML = e.feature.getProperty('name');
boxText.innerHTML = "<div style='text-align: center;'><b>" + myHTML + "</b></div>";
infobox.setPosition(e.feature.getGeometry().get());
infobox.setOptions({
pixelOffset: new google.maps.Size(0, 0)
});
infobox.open(map);
};
}(marker, e));
markerClusterer.addMarker(marker);
oms.addMarker(marker);
google.maps.event.addListener(map, 'idle', function() {
var markersNear = oms.markersNearMarker(marker, false);
marker.setLabel("" + (markersNear.length + 1));
marker.setOptions({
zIndex: markersNear.length
});
});
}
});
layer = map.data.addGeoJson(geoJson);
map.data.setMap(null);
google.maps.event.addListener(map, "click", function() {
infobox.close();
});
});
}
google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map {
width: 100%;
height: 100%;
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<script src="https://unpkg.com/@google/markerclustererplus@4.0.1/dist/markerclustererplus.min.js"></script>
<script src="https://jawj.github.io/OverlappingMarkerSpiderfier/bin/oms.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/google-maps-utility-library-v3-infobox@1.1.14/dist/infobox.min.js"></script>
<div id="map"></div>
关于javascript - 使用 MarkerClustererPlus 和 OverlappingMarkerSpiderfier 重叠指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35569748/
所以我是 Google map 的初学者,我一直在查看 OverlappingMarkerSpiderfier Github 说明,但经过几个小时的摆弄后,我无法让任何东西发挥作用!我的代码非常简单,
背景 我将谷歌地图与 clustermarkererplus 一起使用,以在 map 上显示带有信息气泡的各种标记类型。为了处理坐标完全相同(或非常接近)的标记,使用 OverlappingMarke
我对 Google Maps Api 还很陌生。在 GeoJson 文件中,我有地理位置列表(经纬度坐标)。 与: map.data.loadGeoJson('json/geojson.json');
我正在尝试创建一个包含不同颜色标记的 map ; 红色:http://maps.google.com/mapfiles/ms/icons/red-dot.png黄色:http://maps.googl
我有这张 map ,并根据用户的经度和纬度显示指针。现在我遇到了 OverlappingMarkerSpiderfier 的问题。当有超过 1 个用户具有相同的经度和纬度时。例如:5个人住在同一栋楼里
我希望取消 GMAP 上相同地理点上的标记使用 OverlappingMarkerSpiderfier 而不是鼠标单击事件时的页面加载。原因是 map 显示在电视上,没有点击事件。 下面是我工作的代码
我一直在玩 OVerlappingMArkerSpiderfier https://github.com/jawj/OverlappingMarkerSpiderfier 我有一个添加标记的循环,但每
我正在尝试按照传单插件的演示进行操作 OverlappingMarkerSpiderfier让重叠标记蜘蛛出来,但我已经定义了自己的标记,但无法让它工作。 (我也无法让他们的脚本工作)。 下面的代码按
我有一张谷歌地图,上面有一堆标记。其中一些标记与其他标记具有相同的纬度/经度,因此请坐在彼此的顶部。我正在使用 oms 库来允许标记被蜘蛛化,这样每个标记都可以被点击。 到目前为止一切正常。但是,您可
我正在将现有的 Web 应用程序重写为 React 应用程序。在原文中,leaflet用于 map ,连同 OverlappingMarkerSpiderfier 以区分 map 标记。在新应用中,我
我正在开发一个使用 react-google-maps ( https://github.com/tomchentw/react-google-maps ) 库的项目。 它运行良好,但我们偶然发现了重
我是一名优秀的程序员,十分优秀!