события javascript onclick на точках изображения - PullRequest
0 голосов
/ 26 февраля 2012

У меня есть изображение карты мира (изображение в формате png), теперь я планирую добавить маркеры на карту для различных городов, таких как Нью-Йорк, Сан-Франциско, Лондон, Токья, Мумбаи и т. Д. Маркеры будут как красные точки
У меня есть это изображение внутри моего приложения, и наконец-то я хочу, чтобы эти маркеры имели связанную с ним функцию javascript onclick, например loadstasticschart(cityname).
Поэтому после нажатия на маркер графические диаграммы для этого города загружаются в соседний блок на странице.
Так что, в основном, я хочу, чтобы это был способ связать функцию javascript по щелчку городских точек на карте. Как я могу достичь этой функциональности?

Редактировать: Я понял, что способ состоит в том, чтобы использовать пользовательские карты изображений и иметь теги <area> и событие onclick для этих тегов области. Теги are имеют атрибут координаты, который определяет активную область. Последнее, что осталось сейчас, - это покрасить отдельные области тегами в какой-то цвет, поскольку на карте их сейчас не видно. Я видел сообщение, в котором они предложили установить идентификатор для тегов области и установить цвет идентификатора с помощью document.getElementbyId, поскольку тег стиля меняет цвет на фоновый, или что-то не делает области видимыми.

С уважением Priyank

1 Ответ

2 голосов
/ 26 февраля 2012

У меня есть два небольших предложения, одно из которых - избегать использования тегов области и размещать над изображением тег холста, и использовать Paper.js , чтобы рисовать на нем и связывать с каждым событием рисования событие щелчка.Если вы не хотите работать в старых браузерах, я рекомендую Raphael.js .

В любом случае ... если вы все еще хотите использовать тег области, вы можете иметьsmall dot.png image и поместите его в качестве фона для тега области и измените его положение для тега области каждой страны, например:

.area {
  background: url("../images/dot.png") no-repeat;
}
.area#poland {
  background-position: 100px 150px;
}
.area#argentina {
  background-position: -100px -300px;
}

Надеюсь, это поможет, ура.

--------------------------РЕДАКТИРОВАТЬ-------------------------------

Хорошо, здесь у вас есть рабочее решение: http://jsfiddle.net/8gDLV/1/

html:

<!doctype html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="main.css">
    <script type="text/javascript" src="jquery.min.js"></script>
    <script type="text/javascript" src="main.js"></script>
  </head>
  <body>
    <div id="map-container">
      <img src="http://www.theodora.com/maps/new4/world_color.gif"/>
      <div id="tucuman" class="location"></div>
      <div id="buenosaires" class="location"></div>
      <div id="paris" class="location"></div>
    </div>
  </body>
</html>

main.css:

#map-container {
  width: 648px;
  height: 413px;
  border: 1px solid black;
  position: relative;
}
#map-container .location {
  position: absolute;
  width: 10px;
  height: 10px;
  border-radius: 5px;
  background: red;
  cursor: pointer;
}
#map-container .location.active {
  background: yellow;
}
#map-container .location#tucuman {
  top: 337px;
  left: 126px;
}
#map-container .location#buenosaires {
  top: 350px;
  left: 130px;
}
#map-container .location#paris {
  top: 139px;
  left: 264px;
}

main.js:

$(document).ready(function () {
  $(".location").click(function() {
    if (!$(this).hasClass(".active")) {
      $(".location.active").removeClass("active");
      $(this).addClass("active")
    }
  });
});

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

ура !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...