Реализация события щелчка мыши на плитке на карте

1

Я пытаюсь реализовать событие щелчка мыши для изображения (в основном плитки на карте) на JPanel. Я просто не могу понять, как это сделать. У меня есть класс Main, который расширяет JPanel. Я извлекаю плитки с сервера плитки и отображаю их в методе paintComponent() класса Main на основе определенного уровня масштабирования. Я использую крошечные изображения локатора, чтобы представить конкретный памятник или здание в городе в том же методе paintComponent(). Они размещаются поверх этих плиток на основе соответствующей широты и долготы.

Когда я нажимаю на эти изображения локатора, я должен иметь возможность добавить событие MouseClick() к изображению локатора. Теперь, что я прочитал до сих пор, мы не можем добавить обработчик событий к изображениям. Он может быть добавлен только в собственные компоненты качания. Как мне добавить добавление событий к крошечным изображениям локатора, когда я не представлял его с помощью JLabel или даже вокруг изображения с прямоугольником?

Теги:
swing
mouseevent
paintcomponent

1 ответ

3
Лучший ответ

На достаточно малом карте с подходящей проекцией вы можете преобразовать между системами координат, используя линейную интерполяцию относительно закрывающей панели. Принимая во внимание следующие пропорции, вы можете перекрестно умножать и решать для отсутствующей координаты, как показано в этом полном примере, который отображает координаты мыши в координатах пикселей в изображении.

mouse.x : panelWidthInPixels :: featureLongitude : tileWidthInDegrees
mouse.y : panelHeightInPixels :: featureLatitude : tileHeightInDegrees

В более общем плане используйте библиотеку, например JMapViewer, которая включает проекцию карты в преобразование. Схема для функций тестирования при тестировании представлена ​​здесь.

  • 0
    Отлично. Это даст мне некоторый прогресс.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню