Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
Jquery 谷歌地图api多边形侦听器切换_Jquery_Google Maps Api 3 - Fatal编程技术网

Jquery 谷歌地图api多边形侦听器切换

Jquery 谷歌地图api多边形侦听器切换,jquery,google-maps-api-3,Jquery,Google Maps Api 3,所以我的地图上有两层多边形。这些多边形取决于缩放级别 放大时,我希望隐藏第一级多边形(或删除其侦听器并使其透明),缩小时,我需要隐藏第二级多边形并显示第一级多边形 我目前的策略是使多边形最初是透明的,侦听器会在必要时使它们不透明。为了实现多边形切换,我会在缩放更改时添加和删除侦听器 所以我有一个一级多边形数组和一个二级多边形数组,但我似乎无法切换它们 这怎么不起作用?addListener不应该与RemovelListener完全相反吗 function zoomedout(map) { $.

所以我的地图上有两层多边形。这些多边形取决于缩放级别

放大时,我希望隐藏第一级多边形(或删除其侦听器并使其透明),缩小时,我需要隐藏第二级多边形并显示第一级多边形

我目前的策略是使多边形最初是透明的,侦听器会在必要时使它们不透明。为了实现多边形切换,我会在缩放更改时添加和删除侦听器

所以我有一个一级多边形数组和一个二级多边形数组,但我似乎无法切换它们

这怎么不起作用?addListener不应该与RemovelListener完全相反吗

function zoomedout(map) {

$.each(level2Listeners, function(k,v) {
   google.maps.event.removeListener(v);
});



$.each(level1Listeners, function(k,v) {
   google.maps.event.addListener(v);
});
}


是否有其他更合理的策略来实现切换?

实现图层的最简单方法是在贴图缩放更改的侦听器中迭代数组,适当设置多边形的“贴图”属性。下面的代码假设您的google.maps.Map对象是“Map”和全局的(或者至少在侦听器的范围内可用)

google.maps.event.addListener(映射,“缩放更改”,函数(){
if(map.getZoom()>zoomThreshold){

对于(var i=0;i您已经要求了另一种合理的方法,几个月前我有一个类似的任务(根据缩放比例切换大约5000个覆盖),并且遇到了另一种解决方案

多边形是一个多边形,可以将一个MVCObject的特性绑定到另一个MVCObject的特性

我已经为Map实例(也是一个MVCObject)创建了新属性,并在zoom_changed-event上更新了这些属性

工作流程:

  • 在zoom_changed
    上设置属性 google.maps.event.addListener(map,'zoom_changed',function(){ var z=this.getZoom(); //set map.prop1 to Map-instance when zoom<=5,otherwise to null var p1=(z<=5)?this:null;if(this.get('prop1')!==p1){this.set('prop1',p1);} //set map.prop2 to Map-instance when zoom>5,otherwise to null var p2=(z>5)?this:null;if(this.get('prop2')!==p2){this.set('prop2',p2);} });

  • 一个有4个圈的简单演示:

    你用错误的方式思考这个问题,而不是添加和删除侦听器,考虑一个永久连接的“ZoMySychange”侦听器,当它被激发时,显示/隐藏层,这取决于新的缩放级别。 google.maps.event.addListener(map,'zoom_changed',function(){ var z=this.getZoom(); //set map.prop1 to Map-instance when zoom<=5,otherwise to null var p1=(z<=5)?this:null;if(this.get('prop1')!==p1){this.set('prop1',p1);} //set map.prop2 to Map-instance when zoom>5,otherwise to null var p2=(z>5)?this:null;if(this.get('prop2')!==p2){this.set('prop2',p2);} }); //this polygon will only be displayed at a zoom up to 5 somePolygon.bindTo('map',map,'prop1'); google.maps.event.trigger(map, 'zoom_changed');