javascript - 如何同时监听谷歌地图中的多个DOM事件?

标签 javascript jquery google-maps dom dom-events

我在我的一个网站上展示了一张谷歌地图。当边界是谷歌地图的变化时,我会做一些计算。我计算坐标值并将它们存储在四个单独的文本框中。我能做到。

目前,我只对 map 的 bounds_changed 事件执行此操作。我也想在以下事件中执行相同的操作:

  1. zoom_changed
  2. center_changed
  3. 已加载瓷砖
  4. 空闲
  5. 拖动
  6. 快速启动

如何做到这一点?我不太熟悉 JavaScript。我什至不知道这样的事情是否可能?我应该对源代码进行哪些更改。

我已经包含了一个 fiddle .但它不起作用。只是为了显示代码。

我从 this page 得到了帮助.

HTML 代码:

<div id="googleMap" style="width:900px;height:500px;">

</div>   

<input type="text" id="north" name="north">
<input type="text" id="east" name="east">
<input type="text" id="west" name="west">
<input type="text" id="south" name="south">

JavaScript 代码:

  function loadScript()
    {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = "http://maps.googleapis.com/maps/api/js?key=AIzaSyDY0kkJiTPVd2U7aTOAwhc9ySH6oHxOIYM&sensor=false&callback=initialize";
        document.body.appendChild(script);
    }
    window.onload = loadScript; 

function initialize()
        {
            var myLatlng=new google.maps.LatLng(-25.363882, 131.044922);
            var mapProp =
            {
                center: new google.maps.LatLng(-25.363882, 131.044922),
                zoom:6,
                maxZoom: 8,
                minZoom:2,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("googleMap"),mapProp);
            var image = 'mapmarkers/you-are-here-2.png';
            var marker = new google.maps.Marker
            ({
                position: myLatlng,
                map: map,
                title: 'I am Here.',
                icon: image,
                tooltip: '<B>This is a customized tooltip</B>'
            });

            google.maps.event.addListener(map, 'bounds_changed', function ()
            {           
                var bounds = map.getBounds();
                var southWest = bounds.getSouthWest();
                var northEast = bounds.getNorthEast();
                var getcentre=bounds.getCenter();
                var ne = map.getBounds().getNorthEast();
                var sw = map.getBounds().getSouthWest();

                var centre_lat=getcentre.lat();
                var centre_long=getcentre.lng();
                var myLatlng=new google.maps.LatLng(centre_lat,centre_long);
                var mapProp =
                {
                    center: new google.maps.LatLng(centre_lat,centre_long),
                    zoom:6,
                    maxZoom: 8,
                    minZoom:2,
                    mapTypeId: google.maps.MapTypeId.ROADMAP
                };

                var north2=ne.lat();
                var east2=ne.lng();
                var south2=sw.lat();
                var west2=sw.lng();

                document.getElementById("north").value = north2;
                document.getElementById("east").value = east2;
                document.getElementById("west").value = west2;
                document.getElementById("south").value = south2;

            });
        }

最佳答案

没有直接的方法来使用多个事件。将常用函数移动到新函数:

function common(){
    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    ....
}

添加一个新函数来绑定(bind)一个事件:

function bind(eventName){
    google.maps.event.addListener(map, eventName, function (){
         common();
    });
}

然后添加您的事件:

bind('zoom_changed');
bind('center_changed');
bind('tilesloaded');
bind('idle');
....

关于javascript - 如何同时监听谷歌地图中的多个DOM事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26229255/

相关文章:

javascript - 将带有 'enter' 键的用户文本附加到 ul(聊天框)jQuery

javascript - 在重力形式计算中使用指数

google-maps - 获取当前谷歌地图

javascript - Google 不会显示标题

javascript - mongo查询来自环回问题

javascript - 为什么 JSON.stringify 搞砸了我的日期时间对象?

javascript - 更改 url 位置的最佳方法

java - 如何将csv文件中的数据解析到容器中并搜索1个值并在java中检索其行上的其余值

javascript - 在 Html 中如何使用 Ajax 将本地文件传输到服务器

javascript - 用于输入验证的 Angular 自定义指令