Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   API карт гугла и яндекса, как подгружать много меток? (https://javascript.ru/forum/misc/64505-api-kart-gugla-i-yandeksa-kak-podgruzhat-mnogo-metok.html)

SuperBenza 16.08.2016 13:25

API карт гугла и яндекса, как подгружать много меток?
 
Необходимо на карту добавить много меток, так сказать обозначить разные адреса!
Адресов очень много! Есть ли возможность загрузить на яндекс в какой нибудь панели управления яндекса координаты этих точек на карте? Чтобы они отображались при перемещении по карте?

Адресов много и если их все в JS добавлять то код получится неподьемный!

Как сделать так чтобы загружались метки на видимую часть карты, а при перемещении по карте они подгружались автоматически? То есть посетитель смотрит определенный район города и видит адреса на карте, и если клиент переместиться по карте в другой город, там тоже должны отображаться адреса. А подгружать заранее в браузер посетителя все метки, всю карту РФ, нецелесообразно... Каждому посетителя в браузер выкидывать по 100мб JS-кода? который будет содержать тысачи программных инструкций для размещения меток на карте?

Dilettante_Pro 16.08.2016 16:58

SuperBenza,
Для Google Maps Api по событию bounds_changed использовать метод
getBounds()
Return Value: LatLngBounds
Returns the lat/lng bounds of the current viewport. If more than one copy of the world is visible, the bounds range in longitude from -180 to 180 degrees inclusive. If the map is not yet initialized (i.e. the mapType is still null), or center and zoom have not been set then the result is null or undefined.
LatLngBounds(sw?:LatLng|LatLngLiteral, ne?:LatLng|LatLngLiteral) Constructs a rectangle from the points at its south-west and north-east corners.
И запрашивать из бд маркеры, лежащие в этой зоне и отображать их.
Также полезно при большом количестве маркеров использовать кластеризацию.

andrey3681 05.10.2016 12:03

Хочу добавить маркеры выбранных станций метро (массив arr_metro) и маркеры квартир (массив array_coordinates), если первыми добавлять маркеры метро то маркеры квартир не добавляются и наоборот:( В чем проблема?

function initMap(array_coordinates, array_marker_info, arr_metro) {
var map;
map = new google.maps.Map(document.getElementById('map_canvas2'), {
    center: {lat: 55.7522200, lng: 37.6155600},
    zoom: 12,
    scrollwheel: false
});
var metro = [];
var col_metro = arr_metro.length;
for(var i = 0; i <= col_metro; i++) {
    var ll = arr_metro[i].split(',');
    var lng = ll[1];
    if(lng.search(';') != -1) {
        lng = lng.replace(';', '');
    }
    var coordinates_metro = new google.maps.LatLng(ll[0], lng);
        metro[i] = new google.maps.Marker({
        position:coordinates_metro,
        map: map,
        title: "Метро",
        visible: true,
        icon: 'images/metro_flag.png'
    });
}
var markers = [];
var infowindow = [];
var col = array_coordinates.length;
for (var i = 0; i <= col; i++) {
    infowindow[i] = new google.maps.InfoWindow({ 
        content: array_marker_info[i]
    });
    var ll = array_coordinates[i].split(',');
    var latlng = new google.maps.LatLng(ll[0], ll[1]);
        markers[i] = new google.maps.Marker({
        position:latlng,
        map: map,
        title: array_coordinates[i],
        animation: google.maps.Animation.DROP,
        visible: true,
        icon: 'images/beachflag.png'
    });
    setInfoWindowHandlers(i);
}

function setInfoWindowHandlers(i) {
    markers[i].addListener('click', function() {
        console.log(i);
        infowindow[i].open(map, markers[i]);
    });
}}

рони 05.10.2016 12:16

andrey3681,
не бывает элементов массива с индексом равной длине массива!!!

andrey3681 05.10.2016 13:50

Где Вы такое увидели?!

рони 05.10.2016 14:35

andrey3681,
строка 10 и строка 28

andrey3681 05.10.2016 15:15

col_metro - количество координат в массиве, цикл будет выполнятся пока i будет меньше или равно количеству координат в массиве.

arr_metro[0] - первая пара координат разделенная запятой
arr_metro[1] - вторая пара координат разделенная запятой и т.д.

Как мне получить поочерёдно все элементы массива??

рони 05.10.2016 15:47

Цитата:

Сообщение от andrey3681
или равно количеству координат в массиве.

Цитата:

Сообщение от рони
не бывает элементов массива с индексом равной длине массива!!!

исправьте указанные строки, уберите =

andrey3681 05.10.2016 16:00

Убрал! Ничего не изменилось:(

рони 05.10.2016 16:08

andrey3681,
делайте макет или ссылку


Часовой пояс GMT +3, время: 05:42.