确定谷歌地图拖动方向

时间:2013-09-16 07:23:45

标签: javascript google-maps google-maps-api-3

我需要确定是否正在从从东到西从西到东拖动Google地图。一旦我输入地图方向的组合,Google搜索就会抛出大量的行车路线搜索结果,但与无关拖动关键字。虽然可能会有一些与我无关的相关结果。

目前我通过比较当前中心的经度和center_changed事件中的新中心来做到这一点 -

google.maps.event.addListener(map, 'center_changed', function() {

    var newCenter = map.getCenter();
    var markerIcon;
    if (newCenter.lng() > currentLongitude) {
        markerIcon = goingEast;
    } else {
        markerIcon = goingWest;
    }

    var marker = new google.maps.Marker({
        position: map.getCenter(),
        map: map,
        icon: markerIcon
    });
});

我想知道这是否是正确的方法,或者有一个属性/方法等直接告诉我我需要知道什么。

1 个答案:

答案 0 :(得分:0)

没有内置方法或属性。一旦越过国际日期行,您的方法也可能无法提供所需的结果。

想象一下,你从伦敦经纽约飞往东京。你会说你飞向西方方向,但你的方法会说你飞向东方,因为伦敦的经度是0和Tokio 140的经度。当你拖动地图时会发生同样的情况。

改为使用map-div的mouseEvents:

        mapOptions);
        google.maps.event.addListener(map, 'dragstart', function(){
          google.maps.event.addDomListenerOnce(map.getDiv(),
                                               'mousemove',
                                               function(e){map.set('x',e.clientX);})
        });
        google.maps.event.addListener(map, 'dragend', function(){
          google.maps.event.addDomListenerOnce(map.getDiv(),
                                               'mouseup',
                                               function(e){alert((e.clientX<map.get('x'))
                                                                   ?'left':'right');})
        });