angularjs - 根据 Google 地图的当前视图过滤 Angular 列表视图
问题描述
我正在使用带有标记列表的 Angular Google 地图。随着地图放大,我希望列表缩小以仅显示当前视图中的标记。
我用一些代码创建了一个 plunker。关于如何在地图缩放时过滤列表的任何帮助?
<!DOCTYPE html>
<html ng-app="ngMap">
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script src="https://maps.google.com/maps/api/js?libraries=placeses,visualization,drawing,geometry,places"></script>
<script src="https://code.angularjs.org/1.3.15/angular.js"></script>
<script src="https://rawgit.com/allenhwkim/angularjs-google-maps/master/build/scripts/ng-map.js"></script>
<script>
angular.module('ngMap').controller('MyCtrl', function() {
var vm=this;
vm.positions =[
{pos:[40.71, -74.15]},
{pos:[40.72, -74.20]},
{pos:[40.73, -74.18]},
{pos:[40.77, -74.19]},
{pos:[40.75, -74.17]},
{pos:[40.76, -74.16]},
{pos:[40.74, -74.20]}
];
vm.showData = function() {
alert(this.data.foo);
}
});
</script>
</head>
<body>
<div ng-controller="MyCtrl as vm">
<ng-map zoom="11" center="[40.74, -74.18]">
<marker ng-repeat="p in vm.positions"
position="{{p.pos}}"
title="pos: {{p.pos}}"></marker>
</ng-map>
<div>
<div ng-repeat="p in vm.positions">{{p.pos}}</div>
</div>
</div>
</body>
解决方案
据我从文档中可以看出,没有指令或配置可以为您执行此操作。
我创建了以下解决方法,它将在地图边界发生变化的任何时候过滤位置(过滤掉那些不落在地图边界之间的位置),我相信这就是你所追求的。
2018 年 10 月 23 日更新
这是一个更好的解决方案---> https://embed.plnkr.co/pe6Hv5wHknxtwn4F5aST/
推荐阅读
- javascript - javascript 如何检查相同数据第二次可用
- java - Firebase连接检查Android中的在线离线状态
- ruby-on-rails - 没有工厂女孩的控制器的 rspec
- r - 将堆叠矩阵转换为块矩阵
- java - Hazelcast - 由于证书问题而启用授权时无法访问 Mongodb
- oracle - oracle contains 方法不支持 {} 内的通配符(%)
- javascript - C3Js - X 轴标签文字位置
- android - node.js referenceError 变量未定义
- ubuntu - 如果程序崩溃,linux 会生成 SIGHUP 消息吗?
- ajax - 使用ajax刷新网站的容器