Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Удаление маркера при клике, Google Maps API 
V
    Опции темы
apoptozi
Дата 5.5.2014, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2014

Репутация: нет
Всего: нет



Доброго времени суток!  Я только начинаю осваивать JS и у меня возникла следующая проблема. 
как удалить марке определенного типа, решение искал в гугле но нечего не смог найти, надеюсь сможете помочь 

вот код 


Код

    <script type="text/javascript">
    
    
    var t1 = "40.760651";
    var t2 = "-73.930635";
    
    
    //<![CDATA[
  
    var iconBlue = new GIcon(); 
    iconBlue.image = 'maps/hotels.png';
    iconBlue.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconBlue.iconSize = new GSize(30, 46);
    iconBlue.shadowSize = new GSize(22, 20);
    iconBlue.iconAnchor = new GPoint(6, 20);
    iconBlue.infoWindowAnchor = new GPoint(5, 1);
 
    var iconRed = new GIcon(); 
    iconRed.image = '/maps/rest.png';
    iconRed.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconRed.iconSize = new GSize(30, 46);
    iconRed.shadowSize = new GSize(22, 20);
    iconRed.iconAnchor = new GPoint(6, 20);
    iconRed.infoWindowAnchor = new GPoint(5, 1);
 
    var iconGreen = new GIcon(); 
    iconGreen.image = '/maps/arch.png';
    iconGreen.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png';
    iconGreen.iconSize = new GSize(30, 46);
    iconGreen.shadowSize = new GSize(22, 20);
    iconGreen.iconAnchor = new GPoint(6, 20);
    iconGreen.infoWindowAnchor = new GPoint(5, 1)
 
    var customIcons = [];
    customIcons["1"] = iconBlue;
    customIcons["6"] = iconRed;
    customIcons["31"] = iconGreen;
 
    function load() {
      if (GBrowserIsCompatible()) {
        var map = new GMap2(document.getElementById("map"));
        map.addControl(new GSmallMapControl());
        map.addControl(new GMapTypeControl());

        map.setCenter(new GLatLng(t1,t2), 11);
 
        GDownloadUrl("phpsqlajax_genxml2.php", function(data) {
          var xml = GXml.parse(data);
          var markers = xml.documentElement.getElementsByTagName("marker");
          for (var i = 0; i < markers.length; i++) {
            var name = markers[i].getAttribute("name");
            var address = markers[i].getAttribute("address");
            var type = markers[i].getAttribute("type");
            var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));
            var marker = createMarker(point, name, address, type);
            map.addOverlay(marker);
            
          }
        });
      }
    }
 
    function createMarker(point, name, address, type) {
      var marker = new GMarker(point, customIcons[type]);
      var html = "<strong >" + name + "</strong> <br/>" + address;
      GEvent.addListener(marker, 'click', function() {
        marker.openInfoWindowHtml(html);
      });
      return marker;
   
    }
 

function clearMarkers() {
???????
}
 
                                                                         
  </script>
  
<body>
    <div id="panel">
      <input onclick="clearMarkers();" type=button value="Hide Markers">
      <input onclick="showMarkers();" type=button value="Show All Markers">
    </div>

PM MAIL   Вверх
Aliance
Дата 5.5.2014, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



PM MAIL WWW ICQ Skype   Вверх
apoptozi
Дата 5.5.2014, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2014

Репутация: нет
Всего: нет



Aliance, Уже читал но все равно что то не получается (  smile , если не затруднить можно пример??  smile 
PM MAIL   Вверх
Aliance
Дата 5.5.2014, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Я же дал ссылку даже на конкретный абзац, нужно маркеру установить setMap(null) - тогда он удалится с карты.
PM MAIL WWW ICQ Skype   Вверх
apoptozi
Дата 5.5.2014, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2014

Репутация: нет
Всего: нет



Aliance
Вот код
Код

function clearMarkers() {
 
      customIcons['1'].setMap(null);
//iconBlue.setMap(null);

 
}




не работает, Я только начинаю осваивать JS и много чего еще не понимаю (  smile  smile  smile  smile 
PM MAIL   Вверх
Aliance
Дата 5.5.2014, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Вы разницу между маркером и иконкой понимаете? Вопрос был задан про маркер. У вас он создается функцией createMarker, но никак глобально не сохраняется. Поэтому для удаления у вас нет на него ссылки.

Если вопрос был поставлен некорректно и удалить нужно иконку - сформулируйте это именно так.
PM MAIL WWW ICQ Skype   Вверх
apoptozi
Дата 5.5.2014, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2014

Репутация: нет
Всего: нет



Aliance

вы правы первоначально вопрос быль составлен не корректно, приношу свой извинения, проста уже устал и голова не соображает.

это иконки маркеров, например для гостиниц есть свой тип иконки для ресторанов свой и т .д. мне нужно функционал чтоб  при нажатие  определены тип иконки исчезал или появлялся..  smile 
PM MAIL   Вверх
Aliance
Дата 5.5.2014, 18:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Маркер - это объект на карте. Иконка - это визуализация маркера. Вам нужно удалить все маркеры, с определенной иконкой.

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

И, кстати, вы пользуетесь версией API 2 - а текущая стабильная - 3.
PM MAIL WWW ICQ Skype   Вверх
apoptozi
Дата 5.5.2014, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2014

Репутация: нет
Всего: нет



Aliance

а можно пример как это сделать? а то у меня что то не получается (
PM MAIL   Вверх
Aliance
Дата 6.5.2014, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


I ♥ <script>
****


Профиль
Группа: Модератор
Сообщений: 6418
Регистрация: 2.8.2004
Где: spb

Репутация: 7
Всего: 137



Объявляем глобальную переменную-коллекцию маркеров
Код

/** @var GMarker[] */
var markersCollection = [];


Далее, после вызова функции createMarker дописываем строчку

Код

var marker = createMarker(point, name, address, type);
markersCollection[] = marker;


После этого функция удаления по типу будет выглядеть примерно так:
Код

function clearMarkers(type) {
    for (var i in markersCollection) if (markersCollection.hasOwnProperty(i)) {
        // вот тут не уверен, как получить тип маркера, возможно .type, возможно .getType()
        // а возможно его вовсе не получить, тогда сохраняем маркеры в коллекцию по ключу-типу
        if (markersCollection[i].type == type) {
            // delete him!
        }
    }
}


Это сообщение отредактировал(а) Aliance - 6.5.2014, 10:06
PM MAIL WWW ICQ Skype   Вверх
apoptozi
Дата 7.5.2014, 06:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 5.5.2014

Репутация: нет
Всего: нет



Aliance, Спасибо большое, получился ))  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема »


 




[ Время генерации скрипта: 0.0813 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.