2

我在那里用户搜索周围存在一定的地址房源信息,并将结果呈现为如何模拟包含特定标记

  1. 标记上的应用谷歌地图群集上的用户点击一张地图,有的会聚集
  2. 包含列表格式的搜索结果一个div ..

没有一个1:在div和标记每一个人房源之间一对一的关系.. b/c某些标记包含在群集中。

使用情况下,我想实现是在DIV上的列表用户点击,这将随后自动

  • 在平移地图到
  • 显示一个信息框的列表清单。

这适用于已存在的标记。但是,对于隐藏在群集后面的标记,这不起作用。

我试过设置在地图缩放,像这样的事件侦听器:

google.maps.event.addListener(map, 'zoom_changed', function() { 
    // assume that the the cluster broke up and the marker got rendered by now 
    .. 
}); 

但这并没有work..this也可能是由于这样的事实,缩放水平是不够的打破一个集群..但在那种情况下,我怎么能确定什么水平是什么?我基本上试图做的是模拟用户点击他们感兴趣的列表所属的集群,这会导致集群分裂,地图放大,标记出现。

回答

0

我正在做类似的事情。我会显示一个表格,并在地图上点击某一行时将其拖放到匹配的标记上。我建议你在marker指令上使用clusteroptions属性。我的是这样:

clusteroptions="{ averageCenter: true, minimumClusterSize: 8, gridSize: 30, maxZoom: 14 } 

然后当你点击一个行:

 $scope.zoomToSelectedOrder = function(orderNumber) { 
     var matchingMarker = $scope.filteredMarkers.filter(function(matchingMarker) { 
      return matchingMarker.orderNumber === orderNumber; 
     })[0]; 

     $scope.map.center = { latitude: matchingMarker.latitude, longitude: matchingMarker.longitude }; 
     $scope.map.zoom = 22; 
    }; 

由地图缩放设置为22(任意数量比clusteroptions的MAXZOOM更高),你将确保集群被打破。

这里是示出一些随机生成的标记的第0的数组元素的示例被放大到与正在显示其窗口中的按钮被点击时:

http://plnkr.co/edit/PkHAP9m3UAoiQE422jUo?p=preview

相关问题