Ответ 1
Подтвердите, доступен ли ontouchend
в document
.
var myOptions = {
// your other options...
draggable: !("ontouchend" in document)
};
map = new google.maps.Map(mapElem, myOptions);
Я разрабатываю мобильные сайты с Google Maps, встроенными через API Карт Google. Я смог остановить определенные типы поведения, но не смог найти хороший способ остановить прокрутку карты, когда я прокручиваю палец вниз по странице на iPhone. Вот код, который я использую:
<script>
function initialize() {
var mapElem = document.getElementById("map"),
myOptions = {
zoom: 13,
center: new google.maps.LatLng(41.8965,-84.063),
navigationControl: true,
navigationControlOptions: {
style: google.maps.NavigationControlStyle.SMALL,
position: google.maps.ControlPosition.TOP_RIGHT
},
streetViewControl: false,
mapTypeControl: false,
disableDoubleClickZoom: true,
scrollwheel: false,
backgroundColor: '#f2efe9',
mapTypeId: google.maps.MapTypeId.ROADMAP
},
map = new google.maps.Map(mapElem, myOptions);
}
</script>
<script src='http://maps.google.com/maps/api/js?sensor=false&callback=initialize'></script>
Спасибо заранее.
Подтвердите, доступен ли ontouchend
в document
.
var myOptions = {
// your other options...
draggable: !("ontouchend" in document)
};
map = new google.maps.Map(mapElem, myOptions);
draggable: false
В вашем css:
pointer-events: none;
Вы также можете попробовать а) мобильное обнаружение на стороне сервера понравилось упомянутым здесь, а затем b) включить его в файл .php(например, header.php или footer.php), например:
function isMobile() {
return preg_match("/(android|avantgo|blackberry|bolt|boost|cricket|docomo|fone|hiptop|mini|mobi|palm|phone|pie|tablet|up\.browser|up\.link|webos|wos)/i", $_SERVER["HTTP_USER_AGENT"]);
}
Вставьте его в свой код:
var mapOptions = {
zoom: 18,
center: new google.maps.LatLng(12.345, 12.345),
scrollwheel: false,
<?php echo(isMobile()) ? 'draggable: false' : ''; ?>
};
Обратите внимание, что это, конечно, работает только в том случае, если у вас есть код Javascript Google Maps, встроенный в ваш php файл.
Добавьте это в список myOptions:
gestureHandling: 'cooperative'
Это из документации API JS API. Я реализовал аналогичную функциональность на своем мобильном веб-приложении для мобильных устройств.
У меня была та же проблема, и я нашел ответ в другом вопросе StackOverflow. Это решение работало для меня с моей картой на моем Android с Chrome, по крайней мере.
Внедрить Карты Google на странице без переопределения поведения прокрутки iPhone
Вот как я решил это с помощью методов реагирования на запросы мультимедиа.
HTML на нижнем колонтитуле страницы (чуть выше </body>
):
<div class="jrespond"></div>
CSS
.jrespond{
width: 30px;
}
@media only screen and (max-width: 991px){
.jrespond{
width: 20px;
}
}
@media only screen and (max-width: 767px){
.jrespond{
width: 10px;
}
}
JavaScript:
if(jrespond == 10){
// Do mobile function
}
if(jrespond == 20){
// Do tablet function
}
if(jrespond >= 30){
// Do desktop function
}
**/// Google** map snippet
var isDraggable = true;
if(jrespond == 10){
var isDraggable = false;
}
var myOptions = {
zoom: 12,
center: myLatlng1,
mapTypeId: google.maps.MapTypeId.ROADMAP,
draggable: isDraggable
}
Я новичок, поэтому я даю ответ noob:
попробуйте поставить ширину на 90%, поэтому вы позволяете пространству для пальца идти вниз и вверх, не касаясь карты.
Для меня это сработало:)