6

У нас возникла проблема, связанная с API Карт Google V3. Проблема в том, что пока мы перетаскиваем маркер, карта также начинает перетаскивать.Проблемы с сенсорным экраном Internet Explorer + Windows8

Мы испытываем эту проблему ТОЛЬКО на сенсорных экранах в среде Windows 8 Environment + Internet Explorer, это нормально на НОРМАЛЬНЫХ экранах/мобильных экранах - IPaid/других браузерах (Safari и FireFox).

Мы использовали ниже решения, но он выдает ошибку (eval javascript error) в Интернет Explorer9 и 10:

google.maps.event.addListener(marker, 'dragstart', function(){ 
    mapObject.setOptions({ draggable: false }); 
}); 
google.maps.event.addListener(marker, 'dragend', function(){ 
    mapObject.setOptions({ draggable: true }); 
}); 

Sample code is here.

Мы также сообщили об этой проблеме здесь: gmaps-api-issues

EDIT:

Мы отправленное в related question здесь также.

ответ

4

Некоторые успехи Наконец (карта по-прежнему немного перемещается, но на данный момент ее можно игнорировать)!

Заявленные две переменные:

var isAnyMarkerIsInDraggingState = false;// if a marker is in drag state this value will be TRUE otherwise FALSE 
var mapCenterPositionAtTheTimeWhenMarkerWasDragged;// Map Center Position 

Когда Маркер перетаскивается:

google.maps.event.addListener(objMarker, 'dragstart', function() { 
     // Store map center position when a marker is dragged 
     mapCenterPositionAtTheTimeWhenMarkerWasDragged = mapObject.getCenter(); 
     isAnyMarkerIsInDraggingState = true; 
    }); 

Когда Маркер отбрасывается (перетаскивание заканчивается):

google.maps.event.addListener(objMarker, 'dragend', function() { 
    // Make Map draggable 
    // Set isAnyMarkerIsInDraggingState = false. Because no marker is in drag state 
    mapObject.setOptions({ draggable: true }); 
    isAnyMarkerIsInDraggingState = false; 
}); 

При запуске Drag Map:

google.maps.event.addListener(mapObject, 'dragstart', function() { 
    // isAnyMarkerIsInDraggingState = true: means the user is dragging a marker. 
    // If the user is dragging the Marker then don't allow the Map to be Dragged 
    if (isAnyMarkerIsInDraggingState) { 
     mapObject.setOptions({ draggable: false }); 
    } 
}); 

Когда карта находится в состоянии тащит:

google.maps.event.addListener(mapObject, 'drag', function() { 
    // isAnyMarkerIsInDraggingState = true: means the user is dragging a marker. 
    // If the user is dragging the Marker then don't allow the Map to be Dragged and set its CenterPosition 
    // to mapCenterPositionAtTheTimeWhenMarkerWasDragged 

    if (isAnyMarkerIsInDraggingState) { 
     mapObject.setCenter(mapCenterPositionAtTheTimeWhenMarkerWasDragged); 
    } 
}); 

Complete sample code is here.

Смежные вопросы