загрузитьFromWaypoints с более чем 25 точками, используя Google Maps API v2 - PullRequest
4 голосов
/ 25 ноября 2011

У меня проблема. Я знаю, что в Google Maps, GDirections.loadFromWayPoints имеет ограничение в 25 GLatLng объектов. Я хочу проложить маршрут, скажем, из 300 пунктов.

Как я могу это сделать? Решение, о котором я подумал, состояло в том, чтобы использовать массивы из 25 позиций, а затем вызвать loadFromWaypoints, создать еще один массив из 25 позиций, вызвать loadFromWayPoints и т. Д., Но когда я это сделаю, я смогу просто увидеть первый массив на своей карте.

Есть предложения?

Вот моя функция ajax, которая пытается сделать то, что я описал:

function ajaxFunction(url){
    var ajaxRequest;  // The variable that makes Ajax possible!

    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){

        var dirMap = new GMap2(document.getElementById("map"));
        if(ajaxRequest.readyState == 4){

           var cnt = 0;
           var cen = 0;
           var rta = ajaxRequest.responseText.split("^");

           for (var i = 0; i<(rta.length) -1; i++)

           {

            var reg = rta[i].split("$");
            var lat = reg[0];
            var lng = reg[1];

            if (cnt == 24) {

                var marker = new GMarker(arrayWP[1]);
                dirMap.addOverlay(marker);
                if (cen == 0) {
                   dirMap.setCenter(arrayWP[0], 12);
                   cen = 1;
                }
                dirMap.setUIToDefault();

                directions = new GDirections(dirMap);
                directions.loadFromWaypoints(arrayWP);
                arrayWP[0] = new GLatLng(lat,lng);
                cnt = 1;

            }
            else
            {
                arrayWP[cnt] = new GLatLng(lat,lng);
                cnt++;
            }

           }

         /*  if (cen == 0) {
                var marker = new GMarker(arrayWP[1]);
                dirMap.addOverlay(marker);
                if (cen == 0) {
                   dirMap.setCenter(arrayWP[0], 12);
                   cen = 1;
                }
                dirMap.setUIToDefault();

                directions = new GDirections(dirMap);
                directions.loadFromWaypoints(arrayWP);
           }*/

        }     
    }                             

    ajaxRequest.open("GET", url, true);
    ajaxRequest.send(null);
}

1 Ответ

4 голосов
/ 30 января 2012

PathPolyline делает работу: https://github.com/spinningcode/PathPolyline

Из описания:

PathPolyline - это простая библиотека, с помощью которой можно обойти ограничение в 25 точек на максимальное количество точек с помощью метода GDirection.loadFromWaypoints (Google Map API V2).

Файл readme содержит некоторые инструкции по использованию и демонстрационный код, которые могут оказаться для вас полезными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...