【问题标题】:Touch events not working Google Maps API Javascript触摸事件不起作用 Google Maps API Javascript
【发布时间】:2019-10-19 03:36:57
【问题描述】:

以下代码应允许在移动设备上双击以模拟在 PC 上单击鼠标右键将图钉放在 Google 地图上,但不允许。我绞尽脑汁想弄清楚为什么它不起作用。有人看到这段代码有什么问题吗?在IOS上测试。我发誓这段代码曾经有效!问题是触摸事件什么都不做,地图闪烁并且不会像在桌面上那样触发放置密码。

        google.maps.event.addListener(map, 'rightclick', function (event) {
            addMarkerToMap(event.latLng);
        });

        domMap.addEventListener('click', function (e) {
            //map.setZoom(8);
            //map.setCenter(overlay.getPosition()); // set map center to marker position
            mobileAndTabletcheck() && setTimeout(mySingleClickBelovedFunction(e), 200);
        });

        var singleClickInProgess = false;
        function doDoubleClickProcessing(event)
        {
            console.log('dblclick'); 
            isDblClick = true;
            myDlbClickBelovedFunction(event);
        }
        function handleClickONMarker(e)
        {
            if ( singleClickInProgess )
            {
                singleClickInProgess = false;
                doDoubleClickProcessing(e);
            } 
            else
            {
                singleClickInProgess = true;
                setTimeout(checkClickONMarkerStatus,300);
            }       
        }

        function checkClickONMarkerStatus()
        {
            if ( singleClickInProgess  )
            {
                singleClickInProgess = false;
                console.log('single click');
             }
            singleClickInProgess = false;
        }



        function mySingleClickBelovedFunction(e) {
            if (!isDblClick) {
                // DO MY SINGLE CLICK BUSINESS :)  
                //smoothZoom(map, 12, map.getZoom());
            }
            handleClickONMarker(e);
            // DO NOTHING
        }

        domMap.addEventListener('dblclick', function (event) {
            //alert('test');
            if (mobileAndTabletcheck()) {
                isDblClick = true;
                myDlbClickBelovedFunction(event);
            }
        });

        function myDlbClickBelovedFunction(event) {
            //debugger
            console.log(event);

            overlay.setMap(map);

            //Work out the coordinates on the map
            var x = (event.offsetX),
                y = (event.offsetY);

            var point = new google.maps.Point(x, y),
                latLng = overlay.getProjection().fromContainerPixelToLatLng(point);

            addMarkerToMap(latLng);

            overlay.setMap(null);
        }

        // the smooth zoom function
        function smoothZoom(map, max, cnt) {
            if (cnt >= max) {
                return;
            }
            else {
                y = google.maps.event.addListener(map, 'zoom_changed', function (event) {
                    google.maps.event.removeListener(y);
                    smoothZoom(map, max, cnt + 1);
                });
                setTimeout(function () { map.setZoom(cnt) }, 80);
            }
        }```

Thanks!

【问题讨论】:

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


    【解决方案1】:

    我们的 Google 公开问题跟踪器报告了一个类似问题,但它已被标记为已修复。您介意查看条目吗?问题来了:

    如果它们不相似,请提交新问题。请务必向我们提供一个独立的示例 (http://sscce.org),以演示问题并包含重现的具体步骤。

    Google Public Issue Tracker 是 Google 内部使用的一种工具,用于在产品开发过程中跟踪错误和功能请求。它可供需要与 Google 团队就特定项目进行协作的外部公众和合作伙伴用户在 Google 之外使用。

    【讨论】:

      猜你喜欢
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多