2013-09-23 2 views
0

есть 256 * 256 изображение. Я установил изображение в листе, как указано ниже.Нажмите событие в плакате лифлета - Как заставить событие click работать только внутри изображения плитки карты?

var cloudmadeUrl = tileserver + '/' + selected_map + '/tiles_{z}_{y}x{x}.png'; 

cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 4, noWrap: true, continuousWorld: true }); 

map = new L.Map('map', { 
      center : latlng, 
      zoom : 0, 
      layers : [cloudmade], 
      tms: true 
     }); 

У меня есть событие click для карты. Теперь событие click будет работать, если я выйду за пределы изображения плитки.

Как заставить событие click работать только внутри изображения плитки карты?

+0

Нужна дополнительная информация. Можете ли вы показать код события клика? Можете ли вы собрать JSFiddle, который реплицирует проблему? – Josh

+0

@ Josh здесь [скрипка] (http://jsfiddle.net/shri1920/jPMfm/). Я хочу, чтобы событие click отображало предупреждение, когда я нажимаю только на плитку. Теперь он отображает предупреждение, когда я выхожу за пределы плитки карты. – Shri

+0

@Josh [jsFiddle] (http://jsfiddle.net/shri1920/jPMfm/3/). – Shri

ответ

0

Вместо того чтобы беспокоиться о границах карты (поскольку она привязана к контейнеру, а не к игровому элементу), вы можете беспокоиться о цели события клика. См. Match event.target with existing jquery object за предложение.

Вот working JSFiddle. Он использует event.originalEvent в коде для листов, чтобы собрать информацию об исходном событии кликов. Затем он делает что-то, основанное на классе события click.

+0

Спасибо за скрипку. Он отлично работает для плакатного листка. Но я также использую кластер маркеров буклетов в плагине листка. Поэтому event.originalEvent.target не даст целевому div. Вы знаете, как справиться с этой проблемой в кластере маркеров буклетов? – Shri

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