Google maps api v3 - несколько маркеров, несколько информационных окон, 3 иконки - PullRequest
0 голосов
/ 30 марта 2010

Я хочу сделать «WiFi-карты», и у меня возникли проблемы с этим, я хочу иметь 3 иконки OPEN / WEP / WPA, и много маркеров, и каждый маркер с собственным информационным окном, и только 1 информационное окно сверху, поэтомукогда я нажму # 1, а затем # 2, тогда # 1 будет скрыт.И если у меня будут XXXX маркеры, то при уменьшении карты с ними возникнут проблемы, можно сделать так, как если бы много маркеров в одном месте не отображались при уменьшении, но при увеличении да?

У меня есть вся информация о сетях в базе данных MySQL, поэтому в PHP будет легко показать это, как в учебном пособии по официальной документации по картам Google / v3 / overlays.html # ComplexIcons <- так что следуйте этому, например, </p>

  var nodes = [
['WKKOZ',50.192843,18.967801,nodewep,1],
['airlive',50.193056,18.967974,nodeopen,2],
['Zurawia-3',50.198398,18.974723,nodeopen,3],
['siec dol',50.19303,18.96796,nodewep,4],
['KP_8_1',50.193092,18.96801,nodewep,5],
['Natalia',50.19286,18.967812,nodewpa,6],
['Z104',50.192591,18.967588,nodewep,7],
['D2',50.192499,18.96876,nodewep,8],
['Niesia',50.192474,18.968239,nodewpa,9],
['boolean',50.192539,18.967545,nodewpa,10],
['neostrada_0d65',50.192179,18.96758,nodewep,11],
['neostrada_2d38',50.192216,18.96761,nodewep,12],
['Belkin_G_Wireless_9B7BF7',50.192191,18.969261,nodeopen,13],
['Trans_FijPn',50.1939,18.979565,nodeopen,14],
['dlinklis',50.193113,18.968024,nodewpa,15]

Пожалуйста, помогите мне!:)

Кстати: моя база данных MySQL имеет формат http://wklej.to/7Puw/html

Ответы [ 3 ]

1 голос
/ 25 мая 2010

Я недавно прошел через ту же самую проблему, и сумел разобраться с большинством из этого с помощью Шона Виейры.

Ответ на этот вопрос здесь: Отображение нескольких маркеров накарта с собственными информационными окнами

Вариант для вашего сценария заключается в том, что вы просто добавили бы дополнительное поле в свой массив, в котором вы указали бы URL-путь к маркеру, который хотите использовать..

Затем при циклическом создании маркера (начиная с var marker = new google.maps.Marker и далее) вы будете вызывать значение из вашего массива для переменной icon.

Поскольку у вас есть толькотри типа значков, и я предполагаю, что вы будете заполнять свою запись из БД, вы будете проверять тип точки доступа, а затем в этом месте будете писать соответствующий URL-адрес для типа маркера (я ASP, а неPHP человек, так что извините, использование термина write не является правильным).

Мое решение не имеет дело с информационными окнами.Как только они открыты, они останутся открытыми, если пользователь не закроет их вручную.Я видел решения, позволяющие закрыть другие при открытии нового, но пока не реализовал их.

1 голос
/ 30 марта 2010

Я думаю, вы спрашиваете о том, как разместить на карте большое количество маркеров, которые будут скрыты при более высоком уровне масштабирования. Это называется кластеризацией маркеров.

Существует несколько библиотек Javascript, которые реализуют кластеризацию на стороне клиента и очень легко интегрируются в существующий мэшап:

  • MarkerClusterer - Я использовал для создания гибридного приложения и нашел, что его легко интегрировать с хорошим набором значков по умолчанию.
  • ClusterMarker - Я не использовал этот, но он кажется довольно функциональным.

Вы также можете прочитать это сообщение в блоге , в котором рассматриваются различные альтернативы, или это сообщение в блоге , в котором рассматриваются особенности кластеризации на стороне сервера.

0 голосов
/ 02 мая 2011

Я знаю, что это старый вопрос, но, поскольку у меня есть ответ на него, я напишу его для будущих поколений, чтобы увидеть:)

Решение проблемы информационного окна может быть решено довольно легко. Создайте глобальную переменную с именем currentWindow. Всякий раз, когда пользователь нажимает маркер, EventListener проверяет, является ли currentWindow = infoWindow. Если нет, то вы закрываете currentWindow и устанавливаете его как новое информационное окно. Чисто и просто, просто не забудьте открыть новое информационное окно.

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