2014-01-03 2 views
2

Как отключить событие мобильного касания после инициализации карты бинга?Отключить прикосновение в бинговой карте после инициализации карты

Мы можем отключить до инициализации под кодом ниже, используя объект MapOptions. Однако я забочусь о том, что Bing Map инициализируется.

// Set the map and view options, setting the map style to Road and 
// removing the user's ability to change the map style 
var mapOptions = {credentials:"Bing Maps Key", 
        height: 400, 
        width: 400, 
        mapTypeId: Microsoft.Maps.MapTypeId.road, 
        disableTouchInput : true, 
}; 

// Initialize the map 
var map = new Microsoft.Maps.Map(document.getElementById("mapDiv"), mapOptions); 

Любая помощь очень ценится. Заранее спасибо!!!

+0

Попробуйте установить и снять с диска событие click. Microsoft.Maps.Events.addHandler (карта, 'click', attachClickEventhandler); Затем Microsoft.Maps.Events.removeHandler (attachClickEventhandler); –

+0

Похоже, вы не можете установить эти параметры после загрузки карты. Любопытно, зачем вам нужно его отключать только после его загрузки? – Bryant

+0

@ Брайант, я работаю над отзывчивой веб-страницей. На рабочем столе tocuh должен быть разрешен пока на мобильном устройстве он должен быть отключен. Реальная проблема заключается в том, что некоторые мобильные устройства с более высоким размером экрана отображают макет рабочего стола в ландшафтном режиме, поэтому в этом случае нужно активировать сенсорный экран. :) –

ответ

3

Большинство MapOptions работают при передаче в метод setOptions карты. Например, попробуйте это: map.setOptions ({disableTouchInput: true});

Обратите внимание, что я тестировал это только в IE. Если вы просто хотите отключить панорамирование и масштабирование, вы можете сделать это несколькими способами. Первый - использовать параметры карты, другой - использовать событие changechange, сохранить исходную позицию карты и продолжать привязывать карту к тому же самому виду, чтобы заблокировать ее.

+0

это потрясающе. Он работает, спасибо большое. Я не знаю, почему в документе API Bings Maps об этом не упоминается. В любом случае спасибо большое !!! –

+0

В какой-то момент это не сработало. Я думаю, что команда разработчиков добавила поддержку, но она никогда не передавалась команде документации. Я дам им знать, чтобы они могли его обновить. – rbrundritt

+0

Похоже, что это действительно в документации для параметров карты. Те, которые (например, показывают логотип, который я использовал ниже), которые не могут быть установлены, говорят, что «это свойство может быть установлено только при использовании конструктора карты», те, которые могут быть установлены, опускают это утверждение. – Bryant

1

Поскольку вы не можете установить большую часть MapOptions после создания карты, вы можете сделать это только путем замены вашей карты на новую карту с нужными параметрами. Это очень простой пример, но вот пример, который показывает и скрывает логотип bing, который является одним из параметров, которые вы не можете изменить с помощью setOptions.

function switchMapOptions(active, inactive) { 

    try { 
     var newMap = new MM.Map($(inactive)[0], options); 

     for (var i = 0; i < map.entities.getLength(); i++) { 
      var loc = map.entities.get(i).getLocation(); 
      newMap.entities.push(new MM.Pushpin(loc)); 
     } 

     newMap.setView({center: map.getCenter(), zoom: map.getZoom(), animate: false}); 

     map.dispose(); 
     map = newMap; 
    } 
    catch (e) { 
     alert(e.message); 
    } 
} 

Полный код на Jsfiddle: http://jsfiddle.net/bryantlikes/zhH5g/4/

+0

Спасибо за информацию Брайант, я попробую эту работу. Благодаря!!! –

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