使用 Google Maps API v2 超过 25 个点的 loadFromWaypoints

Max*_*gio 5 javascript google-maps gdirections

我有个问题。我知道在谷歌地图中,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);
}
Run Code Online (Sandbox Code Playgroud)

小智 4

PathPolyline 完成这项工作:https://github.com/spinningcode/PathPolyline

从它的描述来看:

PathPolyline 是一个简单的库,可用于通过 GDirection.loadFromWaypoints 方法(Google Map API V2)绕过最大航路点数量 25 点的限制。

自述文件包含一些使用说明和演示代码,您可能会发现它们很有帮助。