- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用此处找到的 Google Maps API v3 的重叠标记 Spiderfier。 (我的问题位于该文本/代码块的底部)
https://github.com/jawj/OverlappingMarkerSpiderfier/blob/master/README.textile
我尝试实现它的页面与他们在源代码页面上使用的代码有点不同。他们初始化页面并在初始化函数中实现所有函数调用。我的页面初始化 map 并加载一个点,然后使用单独的函数(通过地理编码)添加其他点。
所以,基本上此时 map 已经初始化,现在我调用我的数据库来获取要添加的新位置。
var cityArray= <?php echo json_encode($cityArray); ?>; //get the city
var title = <?php echo json_encode($title); ?>; //and the title to go on it's infowindow
function plotMarkers(){
for(var i = 0; i < <?php echo json_encode($length); ?>; i++){
codeAddresses(cityArray[i],title[i]); //geocode the address
}
}
所以,上面的这段代码给了我两个数组;一张带有位置,一张带有要进入信息窗口的标题。
现在这是 codeAddresses 函数,用于对地址进行地理编码,并将该标记添加到 map 中。正如您从plotMarkers 函数中看到的,数组被循环并添加到codeAddresses 函数中。
function codeAddresses(address,title){
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
google.maps.event.addListener(marker, 'click', (function(marker) {
return function() {
infowindow.setContent(title);
infowindow.open(map, marker);
}
})(marker));
}
});
}
我的问题是我是否将监听器(在上面链接的页面上)添加到加载第一个点的第一个函数中,或者应该将其添加到 codeAddresses 函数中?
此外,我应该将其包含在我的 codeAddresses 函数中还是其他地方?如果它确实进入 codeAddresses,这是否意味着我可以摆脱 for 循环,因为 codeAddresses 是从循环触发的(并在每次迭代期间运行)?
for (var i = 0; i < window.mapData.length; i ++) {
var datum = window.mapData[i];
var loc = new gm.LatLng(datum.lat, datum.lon);
var marker = new gm.Marker({
position: loc,
title: datum.h,
map: map
});
marker.desc = datum.d;
oms.addMarker(marker); // <-- here
}
最佳答案
最好的strategy是对地址进行离线地理编码(使用 geocoding web service ),将坐标存储在数据库中,然后使用它们来显示标记,这将减少加载页面的时间,因为地理编码器受到速率限制和配额的限制。
关于javascript - 谷歌地图spiderfy功能——同一点有多个标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11570916/
我正在尝试 Spiderfy 我的标记并向它们添加监听器。 Spidefying 工作正常,这意味着我得到了重叠的标记 spiderfied 但问题是我似乎无法弄清楚如何向这些标记添加监听器。换句话说
希望利用 George MacKerron 开发的 spiderfy。但是我还有另一个要求,即默认加载所有标记为“spiderd”的 map 。我可以通过使用 javascript 单击标记来模仿这一
我正在尝试实现 https://github.com/jawj/OverlappingMarkerSpiderfier处理可能出现在完全相同位置的多个 map 标记。我使用下面的 javascript
我想知道是否有任何适用于 Google map 的库可以扩展同一 LatLng 上的所有标记。像这样:http://jawj.github.io/OverlappingMarkerSpiderfier
Google map 不提供分解同一位置的多个标记的方法。这种情况可能发生在位于多个居住地点(例如公寓楼或专业服务大楼)的人员或企业身上。根据缩放级别,它也可能发生在购物中心等处。 解决方法是“蜘蛛化
我有一个带有标记的谷歌地图,使用 OverlappingMarkerSpiderfier传播非常紧密重叠的标记。我需要检索鼠标事件标记的屏幕位置(在实际版本中,我正在制作过于复杂的工具提示,无法融入谷
我正在尝试将 Spiderfier 实现到我的代码中,但在将字符串地址转换为(纬度)坐标时遇到一些困难。 演示:http://jawj.github.com/OverlappingMarkerSpid
我目前正在 Leaftlet Marker Cluster 上练习。 1.如果我知道我需要的标记位于某个簇下,我如何自动将该簇蜘蛛化到最大缩放级别,从而无需单击该簇即可获取我需要的标记? 2.如果我知
我有一张谷歌地图,上面有一堆标记。其中一些标记与其他标记具有相同的纬度/经度,因此请坐在彼此的顶部。我正在使用 oms 库来允许标记被蜘蛛化,这样每个标记都可以被点击。 到目前为止一切正常。但是,您可
我是 googlemaps 的新手。我已经阅读了 Overlapping Marker Spiderfier文档,但我仍然对如何将其实现到我的 map 中感到困惑。 这是我的尝试: function
目前正在尝试将重叠标记 Spiderfier 插件集成到 Google map 设置中。我正在将位置数据从 MongoDB 传递到 Jade 模板。 在使用该附加组件之前,我使用 for 循环从坐标数
我是 React 的新手。我尝试在 React 项目中使用 npm 模块 overlapping-marker-spiderfier-leaflet。 我按照 https://www.npmjs.co
我是一名优秀的程序员,十分优秀!