Nano Hash - криптовалюты, майнинг, программирование

Карты Google - код setIcon заставляет маркер исчезнуть

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

function initialize() {
        var myOptions = {
          center: new google.maps.LatLng(-30,135),
          zoom: 4,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map"),
            myOptions);
        var bikeicon = "images/bike.png";


    <?php
    $result=mysql_query("select * from sites");
    while($row=mysql_fetch_assoc($result)){
        ?>
        marker = new google.maps.Marker({
        position: new google.maps.LatLng(<?php echo $row['Latitude']; ?>, <?php echo $row['Longitude']; ?>),
        map: map, icon: bikeicon});

        infoWindow = new google.maps.InfoWindow();

        marker.html="<?php echo stripslashes($row['ShortDesc']); ?>";

        google.maps.event.addListener(marker, 'click', function(){
            //show infowindow
            infoWindow.setContent(this.html);
            infoWindow.open(map, this);
            //change icon color
            var icon = new google.maps.MarkerImage({ url:"http://jovansfreelance.com/bikestats/images/bike_red.png"});
                this.setIcon(icon);     //why doesn't this work?

        })
        <?php
    }
    ?>

}

Код infoWindow работает нормально, но код seticon просто заставляет маркер исчезнуть и не показывает новый значок маркера. Новый URL-адрес значка действителен, в чем вы можете убедиться, открыв его в своем браузере.

Так может ли кто-нибудь сказать мне, почему этот код не работает?


Ответы:


1

MarkerImage ожидает URL-адрес в качестве первого параметра, а не объект, содержащий URL-адрес.

Но вам следует избегать использования MarkerImage, он устарел.

Вы также можете передать URL-адрес непосредственно в setIcon.

возможные методы (все дадут тот же результат):

  //use the MarkerImage-object
 this.setIcon(icon);    

  //simply use the url 
 this.setIcon('http://jovansfreelance.com/bikestats/images/bike_red.png');  

  //using an google.maps.Icon-object
 this.setIcon({url:'http://jovansfreelance.com/bikestats/images/bike_red.png'}); 

 
23.01.2013
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

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

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..