簡體   English   中英

觸摸事件不起作用谷歌地圖 API Javascript

[英]Touch events not working Google Maps API Javascript

以下代碼應允許在移動設備上雙擊以模擬在 PC 上單擊鼠標右鍵以將圖釘放置在 Google Map 上,但不允許。 我絞盡腦汁想弄清楚為什么它不起作用。 有人看到這段代碼有什么問題嗎? 在 IOS 上進行測試。 我發誓這段代碼曾經可以工作,問題是觸摸事件什么都不做。 map 閃爍並且不會像在桌面上那樣觸發刪除密碼。

        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!

我們的Google Public Issue Tracker報告了一個類似的問題,但它已被標記為已修復。 您介意查看條目嗎? 這是問題:

如果它們不相似,請提交一個新問題。 確保向我們提供一個獨立的示例 ( http://sscce.org ) 來演示問題並包含重現的具體步驟。

Google Public Issue Tracker 是 Google 內部使用的一種工具,用於在產品開發過程中跟蹤錯誤和功能請求。 它可供需要與 Google 團隊就特定項目進行協作的外部公眾和合作伙伴用戶在 Google 之外使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM