Хобрук: Ваш путь к мастерству в программировании

дополнительные выборки в API карт Google (3)

После того, как я создал карту с несколькими маркерами с помощью API карт Google, я хочу сделать дополнительные выборки, чтобы выделить подмножество отображаемых маркеров. Я хотел бы сделать это, не возвращаясь к серверу. Предпочтительно я хотел бы хранить данные в маркере или массиве. Я мог либо заменить новым маркером, либо наложить изображение поверх маркера. Может ли кто-нибудь предложить пример того, как это сделать, в частности, часть о добавлении изображения или изменении маркера.

Пример ниже...

введите здесь описание изображения


Ответы:


1

Вот пример, который предполагает, что когда вы загружаете свою страницу, эти данные возвращаются с сервера в формате JSON.

data = [{широта: 103,2, долгота: 12,3, isDiscountOutlet: false}, {широта: 101,2, долгота: 11,3, isDiscountOutlet: false}]

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

Часть 1. Создайте глобальную переменную для хранения наших маркеров

var storedMarkers;

Часть 2. Создание карты с использованием данных с сервера

function initialize() {
  var mapOptions = {
    zoom: 4,
    center: new google.maps.LatLng(103, 11)
  }
  var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

  // Add the markers. We are going to store them in a global array too,
  // so we can access them later.
  for (var i = 0; i < data.length; ++i) {

    // Create one marker for each piece of data.
    var marker = new google.maps.Marker({
        position: new google.maps.LatLng(data[i].latitude, data[i].longitude),
      map: map
    });

    // Store that marker, alongside that data.
    var dataToStore = {
      markerObject: marker,
      dataAssociatedWithMarker: data[i]
    };

    storedMarkers.push(dataToStore);
}

google.maps.event.addDomListener(window, 'load', initialize);

Часть 3. Давайте покажем все магазины со скидками и скроем все остальные маркеры, когда кто-то нажимает кнопку

Я предполагаю, что у вас есть элемент DOM (кнопка) с идентификатором «скидка». Я тоже собираюсь схитрить и использовать jQuery :)

$("#discount").click(function () {
  for (var i = 0; i < storedMarkers.length; ++i) {
    var currentStoredMarker = storedMarkers[i];

    // Is this marker a discount outlet?
    if (currentStoredMarker.dataAssociatedWithMarker.isDiscountOutlet == true) {
      // Let's show it!
      currentStoredMarker.markerObject.setVisible(true);
    } else {
      // Let's hide it!
      currentStoredMarker.markerObject.setVisible(false);
    }
  }
});
02.05.2015
Новые материалы

Создание кнопочного меню с использованием HTML, CSS и JavaScript
Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

Внедрите OAuth в свои веб-приложения для повышения безопасности
OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

Классы в JavaScript
class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

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

Обзор: Машинное обучение: классификация
Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

Разработка расширений Qlik Sense с qExt
Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..