2014-11-13 2 views
0

Я хочу динамически загружать маркеры на карте Google, из базы данных Mysql. Маркеры в радиусе 20 км от центра карты должны появиться, и по мере изменения/панорамирования центра карты старые маркеры, лежащие вне радиуса 20 км, должны исчезнуть, и появятся новые маркеры в радиусе 20 км от нового центра.Динамическая загрузка маркеров на Картах Google

Прямо сейчас я могу загрузить маркеры с радиусом 20 км от центра карты, но только за один раз открыта веб-страница.

Любой наводящий учебник или помощь по той же

+0

Какой расчет вы используете на сервере (для базы данных)? –

+0

Мы не заботимся об этом, так как ОП сказал, что это работает. – MrUpsidown

ответ

1
  1. Bind слушатель center_changed события на объекте карты.
  2. Когда вы создаете свои маркеры, нажмите их в массив (нажмите каждый объект маркера).
  3. В центре изменения (# 1), прокрутите массив маркеров и вызовите setMap(null) на каждый маркер.
  4. Запросите новую базу данных с новыми координатами центра.
  5. Следуйте каждый шаг снова с # 2

Вот некоторый быстрый код, так что вы получите идею:

// Create an array of markers 
var markers = []; 

// Create your map and all the stuff you need 

// Bind the event listener 
google.maps.event.addListener(map, 'center_changed', reloadMarkers); 

// Function to reload the markers 
function reloadMarkers() { 

    for (var i = 0; i < markers.length; i++) { 

     // Remove each marker from map 
     markers[i].setMap(null); 
    } 

    createMarkers(); 
} 

function createMarkers() { 

    // Query your database with the parameters you need 
    // Create each marker object (probably within a loop) 

    var marker = new google.maps.Marker({ 
     map: map, 
     // Your other marker properties here 
    }); 

    // Push new marker to the markers array 
    markers.push(marker); 
} 

Надеется, что это помогает.

Смежные вопросы