Сенсорные события для 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 ответ:
Если вы попробуете этот демонстрационный сайт google maps event на вашем телефоне/планшете, вы поймете, что ничего не происходит, даже когда вы делаете длинный клик. Это просто означает, что Google Maps не поддерживает события на планшетах.
Но с помощью jQuery вы можете обнаружить длинный клик или другие события "только для мобильных устройств". Однако jQuery ничего не знает о картах и поэтому сообщает вам, где вы щелкнули.
Таким образом, одним из решений этого может быть использование обоих, Google Maps Click event, и jQuery событие tabhold .
Сначала пусть
tabhold
установит флаг, чтобы указать, что эта функция щелчка изtabhold
; затем на функции onclick проверьте, является ли это текущее событие щелчка из tabhold, если да, выполните действие.У меня есть быстрая [демонстрация на jsfiddle][4], я просто скопировал и вставил какой-то код, так что он выглядит довольно уродливо. Но, надеюсь, это поможет.