Сенсорные события для google maps на мобильном устройстве


В моем приложении я использую google maps и создаю местоположения на картах, как только пользователь нажимает правую кнопку мыши. У меня есть это событие, делающее трюк для меня

google.maps.event.addListener(map, 'rightclick', function (e) {
    if (checkDistance(e.latLng)) {
        if (viewModel.haveRolesToDoStuffOnProjectLevel()) {
            geocoder.geocode({ location: e.latLng }, function (result) {
                if (result.length > 0) {
                    var data = {
                        name: result[0].formatted_address.split(",")[0],
                        location: e.latLng,
                        address: result[0].formatted_address
                    }
                    if (viewModel.oldLocation()) {
                        moveLocationCreate(data);
                    } else {
                        startLocationCreate(data);
                    }
                }
            });
        }
    }
});

Все работает нормально, пока я не открою приложение в мобильном телефоне. На мобильном устройстве событие rightclick не сработает. Я искал, чтобы найти способ иметь что-то вроде long click на мобильном телефоне, но это не работает. Может ли кто-нибудь помочь мне найти решение для этого?

1   2  

1 ответ:

Если вы попробуете этот демонстрационный сайт google maps event на вашем телефоне/планшете, вы поймете, что ничего не происходит, даже когда вы делаете длинный клик. Это просто означает, что Google Maps не поддерживает события на планшетах.

Но с помощью jQuery вы можете обнаружить длинный клик или другие события "только для мобильных устройств". Однако jQuery ничего не знает о картах и поэтому сообщает вам, где вы щелкнули.

Таким образом, одним из решений этого может быть использование обоих, Google Maps Click event, и jQuery событие tabhold .

Сначала пусть tabhold установит флаг, чтобы указать, что эта функция щелчка из tabhold; затем на функции onclick проверьте, является ли это текущее событие щелчка из tabhold, если да, выполните действие.

У меня есть быстрая [демонстрация на jsfiddle][4], я просто скопировал и вставил какой-то код, так что он выглядит довольно уродливо. Но, надеюсь, это поможет.