Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 基于谷歌地图的当前视图过滤角度列表视图_Angularjs_Google Maps_Angular Filters_Ng Map - Fatal编程技术网

Angularjs 基于谷歌地图的当前视图过滤角度列表视图

Angularjs 基于谷歌地图的当前视图过滤角度列表视图,angularjs,google-maps,angular-filters,ng-map,Angularjs,Google Maps,Angular Filters,Ng Map,我正在使用带有标记列表的角度谷歌地图。随着地图的放大,我希望列表缩小到只显示当前视图中的标记 我用一些代码创建了一个plunker。有关于如何在地图缩放时过滤列表的帮助吗 <!DOCTYPE html> <html ng-app="ngMap"> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <script src="https://

我正在使用带有标记列表的角度谷歌地图。随着地图的放大,我希望列表缩小到只显示当前视图中的标记

我用一些代码创建了一个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>

角度。模块('ngMap')。控制器('MyCtrl',函数(){
var vm=这个;
虚拟机位置=[
{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=函数(){
警报(this.data.foo);
}
});
{{p.pos}}


从文档中可以看出,没有任何指令或配置可以为您执行此操作

我创建了以下工作,可以在地图边界发生变化时过滤位置(过滤掉那些不在地图边界之间的位置),我相信这就是您所追求的


2018年10月23日更新


这里有一个更好的解决方案-->

Nathan,太棒了!谢谢你的帮助!由于某种原因,这停止了工作。谷歌api已经改变了,或者其他什么,边界是不同的字段。我一直没能让它工作。是的,看起来他们改变了
边界的属性(以前是
b
f
,现在是
j
l
)。无论如何,有一个更好更稳定的方法来解决这个问题。特别是
getNorthEast()
getSouthWest()
,它们都返回一个lat/lon对(
bounds.getNorthEast()
)-您可以使用这4个点来构建
latBounds
lonBounds
,而不必担心这种情况再次发生。干杯