如何在谷歌地图中绑定标记的触摸事件?

时间:2012-07-04 02:07:06

标签: javascript html5 google-maps google-maps-api-3 touch-event

google maps api不支持触摸事件

但现在我需要在地图和标记上做一些事情,比如长按地图,点击标记,拖动标记。

我想做的是和iOS的谷歌地图客户端一样

2 个答案:

答案 0 :(得分:17)

我以与shreedhar相同的方式实现了触摸事件,但使用了“mousedown”事件。我发现在网页浏览中使用Google Maps API(即PhoneGap)时,移动设备上不会触发“点击”,但通过点按手机或点击网络即可触发“mousedown”事件。 / p>

window.infowindow = new google.maps.InfoWindow({
   content: 'content'
});

google.maps.event.addListener(marker, 'mousedown', function(){
   window.infowindow.open(marker.get('map'), marker);
});

此外,请务必仅在页面上定义一个infowindow变量,并将其重新用于所有标记,因此我将infowindow定义为“全局”变量window.infowindow。

答案 1 :(得分:1)

在此链接中,您可以获得许多示例。 https://google-developers.appspot.com/maps/documentation/javascript/examples/

最近我在谷歌地图上工作,下面是可以拖放标记的代码,它在移动网络浏览器中非常适用。

gmap : function(lat,lng){
            var stockholm = new google.maps.LatLng(lat, lng);
            var parliament = new google.maps.LatLng(lat, lng);
            var marker;
            var map;
            function initialize() {
                var mapOptions = {
                    zoom: 13,
                    disableDefaultUI: true,
                    mapTypeId: google.maps.MapTypeId.ROADMAP,
                    center: stockholm
                };
                map = new google.maps.Map(document.getElementById("gmapDiv"),mapOptions);
                marker = new google.maps.Marker({
                    map:map,
                    draggable:true,
                    animation: google.maps.Animation.DROP,
                    position: parliament
                });
               var infowindow = new google.maps.InfoWindow({
                   content: 'content'
               });
                google.maps.event.addListener(marker, 'click', function(){
                  infowindow.open(marker.get('map'), marker);
                  });
            }
            initialize();
        }