API Google Map V3: Як додати спеціальні дані до маркерів


117

Чи є спосіб я додати якусь спеціальну інформацію до своїх маркерів для подальшого використання. Існують способи мати інформаційне вікно та заголовок, але що робити, якщо я хочу пов’язати маркер з іншою інформацією.

У мене на сторінці відображаються інші речі, які залежать від маркерів, тому, коли маркер натискає, вміст сторінки повинен змінюватися залежно від того, який маркер був натиснутий. Я хотів би зберігати та отримувати власні дані, як тільки маркер скаже клацнув і т.д.

Дякую

Відповіді:


214

Оскільки маркер Google є об’єктом JavaScript, ви можете додати спеціальну інформацію у форму key: value, де ключ - дійсна рядок. Вони називаються об'єктними властивостями і до них можна підходити різними способами. Значення може бути будь-яким законним, таким же простим, як числа чи рядки, а також функції, або навіть інші об'єкти. Три прості способи: у декларації, крапці та квадратних дужках

var markerA = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(0, 0),
    customInfo: "Marker A"
});

var markerB = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(-10, 0)
});
markerB.customInfo = "Marker B";

var markerC = new google.maps.Marker({
    map: map,
    position: new google.maps.LatLng(-20, 0)
});
markerC['customInfo'] = "Marker C";

Потім відновіть його аналогічним чином:

google.maps.event.addListener(markerA, 'click', function() {
    alert(this.customInfo);
});

3
У документації немає нічого, що формалізує цей шаблон. Ось сподіваємось, що вони це зроблять, а не розбивають у більш пізній версії.
Адам

1
Властивість "customInfo" не існує для типу "Маркер".
alehn96

1
Якщо ви використовуєте машинопис, можливо, вам потрібно скористатися дужками, а не крапкою, щоб призначити такі властивості
Cocoduf

14

Ви можете додати власні власні властивості до маркерів (будьте обережні, щоб не суперечити властивостям API).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.