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
Javascript 如何监听对象的属性变化?_Javascript_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 如何监听对象的属性变化?

Javascript 如何监听对象的属性变化?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,一般来说,我对谷歌地图api和js都是新手。 我有一个有两个圆形对象的项目,它们可以更改半径和中心坐标,每次这些属性中的一个更改时,我都要执行特定的功能。 使用控制器按setradius方法更改圆的半径,也可以拖动圆。我不想在用户拖动圆圈时每帧执行一次函数。如果属性没有更改,则在0.1秒后可能会进行检查,然后才执行。 希望我没有把它弄得太复杂 TL;DR:如何在每次圆的属性发生变化时执行函数?谷歌地图Javascript API v3是基于事件的。具有在其任何属性更改时激发的事件。将事件侦听器添

一般来说,我对谷歌地图api和js都是新手。 我有一个有两个圆形对象的项目,它们可以更改半径和中心坐标,每次这些属性中的一个更改时,我都要执行特定的功能。 使用控制器按setradius方法更改圆的半径,也可以拖动圆。我不想在用户拖动圆圈时每帧执行一次函数。如果属性没有更改,则在0.1秒后可能会进行检查,然后才执行。 希望我没有把它弄得太复杂


TL;DR:如何在每次圆的属性发生变化时执行函数?

谷歌地图Javascript API v3是基于事件的。具有在其任何属性更改时激发的事件。将事件侦听器添加到圆中,以侦听已更改的事件

    cityCircle = new google.maps.Circle(populationOptions);
    google.maps.event.addListener(cityCircle, 'radius_changed', radiusChanged);
基于以下内容的工作代码段:

//此示例在地图上创建圆,表示 //北美洲的人口。 //首先,为每个城市创建一个包含LatLng和人口的对象。 var citymap={}; 城市地图[“芝加哥”]={ 中心:新google.maps.LatLng41.878113,-87.629798, 人口:2714856 }; 城市地图[纽约]={ 中心:新google.maps.LatLng40.714352,-74.005973, 人口:8405837 }; 城市地图[洛杉矶]={ 中心:新google.maps.LatLng34.052234,-118.243684, 人口:3857799 }; 城市地图[“温哥华”]={ 中心:新的google.maps.LatLng49.25,-123.1, 人口:603502 }; var城市圈; 函数半径改变{ document.getElementById'info'。innerHTML=+this.title+radius=+this.radius.toFixed2+km; }; 函数初始化{ //创建地图。 变量映射选项={ 缩放:4, 中心:新google.maps.LatLng37.09024,-95.712891, mapTypeId:google.maps.mapTypeId.TERRAIN }; var map=new google.maps.Mapdocument.getElementById'map-canvas', 地图选项; //为城市地图中的每个值构建圆。 //注:我们根据人口来缩放圆的面积。 城市地图中的var城市{ 变量填充选项={ strokeColor:'FF0000', 笔划不透明度:0.8, 冲程重量:2, fillColor:'FF0000', 不透明度:0.35, 是的, 真的, 标题:城市, 地图:地图, 中心:城市地图[城市]。中心, 半径:Math.sqrtcitymap[城市].人口*100 }; //将该城市的圆圈添加到地图中。 cityCircle=new google.maps.CirclepopulationOptions; google.maps.event.addListenercityCircle,'radius_changed',radius changed; } } google.maps.event.AddDomainListenerWindow“加载”,初始化; html, 身体 地图画布{ 高度:500px; 宽度:500px; 边际:0px; 填充:0px }
既然您提到了控制器,那么您使用的客户端框架是什么?还有,你能给你的问题添加一个改变半径的代码的例子吗?对于控制器,我使用谷歌地图中的内置控制器选项,从这里得到了参考。我用这样一个简单的函数来改变半径:functioncircle{circle.setRadiuscircle.getRadius*1.1};此函数使给定圆变大10%如果您总是从同一组函数中更改半径,则只需创建一个名为updateRadius的新函数,并在更改半径的函数中调用它。每次半径更改时,您希望执行什么函数?你的代码看起来像什么?请提供一个示例,演示您的代码看起来像什么,以及您认为应该工作的尝试。我可以向每个更改半径的控制器添加所需的函数,即我需要在圆的属性更改时执行的函数,但我仍然需要注意拖动圆-我在圆得到后如何执行函数拖到新位置?