我有一张有很多标记的地图.所有这些标记都有InfoWindow.使用Markers Cluster Lib(http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js),我可以获得在点击时放大的群集.
一些标记具有完全相同的坐标,因此即使达到最大变焦,它们也会变成一个簇.到目前为止,这一切都很好,除了我想在点击集群时打开InfoWindow,该集群在缩放时从不分割成标记.在这个InfoWindow中,我想根据它包含的标记显示信息.
到目前为止这是我的代码.InfoWindow在Markers上运行良好,但在单击Clusters时不显示InfoWindow.
function initialize(lat, lng) { var myLatlng = new google.maps.LatLng(lat,lng); var mapOptions = { mapTypeControl: false, center: myLatlng, zoom: 14, maxZonn:15 }; map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions); google.maps.event.addListener(map, 'idle', function() { getMarkers(map.getBounds()); }); }; function getMarkers(bounds){ var filter = build_filter(); var bounds = { 'swlat':bounds.getSouthWest().lat(), 'swlng':bounds.getSouthWest().lng(), 'nelat':bounds.getNorthEast().lat(), 'nelng':bounds.getNorthEast().lng() }; data = { 'bounds': bounds } $.ajax({ type: "POST", dataType: 'json', async: false, url: "=$x_url;?>", data: data, cache: true, success: function (json) { addMarkers2Map(json); } }); } function addMarkers2Map(data){ $('#properties_counter').html(data.length); var markers = []; for (var i = 0; i < data.length; ++i) { // set the marker position var latLng = new google.maps.LatLng(data[i].lat, data[i].lng); console.log(data[i].lat); // drop the marker var marker = new MarkerWithLabel({ position: latLng, map: map, labelContent: data[i].price, labelAnchor: new google.maps.Point(27, 35), title: data[i].title, labelClass: "map-markers", zIndex: i // icon: ' ' }); markers.push(marker); var infowindow = null; buildInfoWindow(marker,map,data[i], i); } var markerCluster = new MarkerClusterer(map, markers); google.maps.event.addListener(markerCluster, 'click', function() { infowindow.open(map,markerCluster); }); } function buildInfoWindow(marker, map, data, index){ var strVar=""; strVar += "
"; strVar += data.name+"<\/i> | "+data.age+" <\/i> | "+data.gender+" <\/i>"; strVar += ""; strVar += "<\/a>"; strVar += "<\/div>"; strVar += ""+data.city+"<\/div>"; strVar += "<\/a>"; var infowindow = new google.maps.InfoWindow({ content: strVar }); google.maps.event.addListener(marker, 'click', function() { infowindow.open(map,marker); }); }我怎样才能做到这一点?
1> geocodezip..:向MarkerClusterer添加"clusterclick"侦听器,在触发该事件时打开infowindow.
概念证明小提琴
代码段:
var gm_map; var markerArray = []; var infoWindow = new google.maps.InfoWindow(); function initialize() { var marker, i; var options_googlemaps = { minZoom: 4, zoom: 18, center: new google.maps.LatLng(59.328631, 13.485688), maxZoom: 18, mapTypeId: google.maps.MapTypeId.ROADMAP, streetViewControl: false } gm_map = new google.maps.Map(document.getElementById('google-maps'), options_googlemaps); var options_markerclusterer = { gridSize: 20, maxZoom: 18, zoomOnClick: false, imagePath: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m' }; var markerCluster = new MarkerClusterer(gm_map, clusterMarkers, options_markerclusterer); google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) { var markers = cluster.getMarkers(); var array = []; var num = 0; for (i = 0; i < markers.length; i++) { num++; array.push(markers[i].getTitle() + '
'); } if (gm_map.getZoom() <= markerCluster.getMaxZoom()) { infoWindow.setContent(markers.length + " markers
" + array); infoWindow.setPosition(cluster.getCenter()); infoWindow.open(gm_map); } }); for (i = 0; i < clusterMarkers.length; i++) { var marker = clusterMarkers[i]; google.maps.event.addListener(marker, 'click', (function(marker) { return function() { infoWindow.setContent(this.getTitle()); infoWindow.open(gm_map, this); } })(marker)); } } google.maps.event.addDomListener(window, 'load', initialize); var clusterMarkers = [ new google.maps.Marker({ position: new google.maps.LatLng(59.381059, 13.504026), map: gm_map, title: "P1220214 1.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.338683, 13.492057), map: gm_map, title: "P1220214 2.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.340715, 13.49631), map: gm_map, title: "P1220214 3.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.327232, 13.487384), map: gm_map, title: "P1220214 4.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.379034, 13.516566), map: gm_map, title: "P1220214 5.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.328631, 13.485688), map: gm_map, title: "P1220214 6.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.328657, 13.485591), map: gm_map, title: "P1220214 7.JPG" }), new google.maps.Marker({ position: new google.maps.LatLng(59.328501, 13.485782), map: gm_map, title: "P1220214 8.JPG" }) ].photo-map { background-color: #222222; height: 500px; width: 100%; }
推荐阅读
如何解决《构建GoogleSignInOptions时的firebaseserverClientId》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何使用Realm排序?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《toLocaleLowerCase()和toLowerCase()之间的区别》经验,为你挑选了1个好方法。 ... [详细] 如何解决《For循环在Groovy和Java中的工作方式不同》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何在Android中从名称或lat获取PlaceID?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在原生Android文件选择器中按mimetype或extention进行过滤》经验,为你挑选了0个好方法。 ... [详细] 如何解决《在Java中同时对三个ArrayLists进行排序的最有效方法是什么?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在IntelliJIDEA中做笔记》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何将字典列表转换为列表列表》经验,为你挑选了1个好方法。 ... [详细] 如何解决《为什么我的SQLUPDATE语法给出“模棱两可的列名”?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《在空的mysql实例上使用liquibase创建数据库》经验,为你挑选了2个好方法。 ... [详细] 如何解决《如何在Java中组合Closeable对象?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Flexboxdiv文本包装》经验,为你挑选了1个好方法。 ... [详细] 如何解决《使用覆盖索引选择某一天的记录》经验,为你挑选了0个好方法。 ... [详细] 如何解决《为什么delegate.respondsToSelector(Selector("testEnum:"))这段代码会以快速语言返回false?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《什么是C++中strstr()函数的时间复杂度,空间复杂度和算法?》经验,为你挑选了1个好方法。 ... [详细] 如何解决《Recyclerview中的多个edittext》经验,为你挑选了1个好方法。 ... [详细] 如何解决《如何使用SpringBatch实现步骤的分布式处理》经验,为你挑选了0个好方法。 ... [详细] 如何解决《为什么fresco选择不在android5.0或更高版本上将位图放在ashmem中》经验,为你挑选了0个好方法。 ... [详细] 如何解决《设置HTTPS连接的https.protocols系统属性的问题》经验,为你挑选了0个好方法。 ... [详细]吐了个 "CAO" !Tags | 热门标签RankList | 热门文章
- 1是否可以使用EF7执行自定义SQL查询
- 2Imageview中的并行动画
- 3如何使用Spring Boot和Liquibase Changeset Yaml文件访问系统属性
- 4MultiPartEntity和表单数据究竟是什么?他们如何用于在Android上传图像?
- 5弹簧安全启动弹簧websocket失败,"没有bean命名'stompWebSocketHandlerMapping'被定义'
- 6计算下个月的最后一天
- 7使用jQuery上传多部分文件
- 8JSPM - 使用import和使用脚本标记包含客户端库文件是否有任何优点/缺点?
- 9如何让Yii2处理数据提供者的两个不同实例?
- 10img src属性的json值显示android TextView中的小蓝色框
- 11比较者不工作
- 12如何在python中保护密码
- 13instance_eval和singleton方法之间的区别
- 14AngularJS:显示加载器图像,直到加载数据
- 15Microsoft JScript运行时错误:对象预期代码800A13F
- 16隐藏状态monad的类型参数
- 17对于MVC6 RC1,现有的MVC项目是否有简单的升级过程?
- 18动态突出显示时,将项目符号添加到<p>?
- 19是否可以将EntityFramework与MemSQL一起使用?
- 20为什么clock()返回1.84467e + 13?
DevBox开发工具箱 | 专业的在线开发工具网站 京公网安备 11010802040832号 | 京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有