获取Javascript中google maps编码的多段线的起点和终点坐标

获取Javascript中google maps编码的多段线的起点和终点坐标,javascript,google-maps,gis,polyline,Javascript,Google Maps,Gis,Polyline,我想得到一个: 给我举个例子: [38.5,-120.2],[43.252,-126.453] //lat,lng of start and end 我应该如何用Javascript来做呢 最简单的方法是使用谷歌地图Javascript APIGoogle.Maps.geometry.encoding.decodePath方法 代码片段: var encodedStr=“_p~iF~ps|U ullnqc_mqNvxq`@”; 函数初始化(){ 变量映射选项={ 缩放:14, 中心:新go

我想得到一个:

给我举个例子:

[38.5,-120.2],[43.252,-126.453] //lat,lng of start and end

我应该如何用Javascript来做呢

最简单的方法是使用谷歌地图Javascript API
Google.Maps.geometry.encoding.decodePath
方法

代码片段:

var encodedStr=“_p~iF~ps|U ullnqc_mqNvxq`@”;
函数初始化(){
变量映射选项={
缩放:14,
中心:新google.maps.LatLng(34.3664951,-89.5192484)
};
var map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
var path=google.maps.geometry.encoding.decodePath(encodedStr);
var bounds=new google.maps.LatLngBounds();
对于(变量i=0;i
html,
身体,
#地图画布{
高度:500px;
宽度:500px;
边际:0px;
填充:0px
}

开始
结束
最简单的方法是使用谷歌地图Javascript API
Google.Maps.geometry.encoding.decodePath
方法

代码片段:

var encodedStr=“_p~iF~ps|U ullnqc_mqNvxq`@”;
函数初始化(){
变量映射选项={
缩放:14,
中心:新google.maps.LatLng(34.3664951,-89.5192484)
};
var map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
var path=google.maps.geometry.encoding.decodePath(encodedStr);
var bounds=new google.maps.LatLngBounds();
对于(变量i=0;i
html,
身体,
#地图画布{
高度:500px;
宽度:500px;
边际:0px;
填充:0px
}

开始
结束
如果您想要一个独立的javascript函数,请使用以下命令:

//check the precision
var decompressed = decompress(encoded, 6);

function decompress (encoded, precision) {
    precision = Math.pow(10, -precision);
    var len = encoded.length, index=0, lat=0, lng = 0, array = [];
    while (index < len) {
        var b, shift = 0, result = 0;
        do {
            b = encoded.charCodeAt(index++) - 63;
            result |= (b & 0x1f) << shift;
            shift += 5;
        } while (b >= 0x20);
        var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1));
        lat += dlat;
        shift = 0;
        result = 0;
        do {
            b = encoded.charCodeAt(index++) - 63;
            result |= (b & 0x1f) << shift;
            shift += 5;
        } while (b >= 0x20);
        var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1));
        lng += dlng;
        array.push(lat * precision);
        array.push(lng * precision);
    }
    return array;
}
//检查精度
var decompressed=解压缩(编码,6);
函数解压缩(编码,精度){
精度=数学功率(10,-精度);
var len=encoded.length,index=0,lat=0,lng=0,array=[];
while(指数>1):(结果>>1));
lat+=dlat;
移位=0;
结果=0;
做{
b=encoded.charCodeAt(index++)-63;
结果|=(b&0x1f)=0x20);
var dlng=((结果&1)~(结果>>1):(结果>>1));
液化天然气+=液化天然气;
阵列推力(横向*精度);
阵列推力(lng*精度);
}
返回数组;
}

如果您想要一个独立的javascript函数,请使用以下命令:

//check the precision
var decompressed = decompress(encoded, 6);

function decompress (encoded, precision) {
    precision = Math.pow(10, -precision);
    var len = encoded.length, index=0, lat=0, lng = 0, array = [];
    while (index < len) {
        var b, shift = 0, result = 0;
        do {
            b = encoded.charCodeAt(index++) - 63;
            result |= (b & 0x1f) << shift;
            shift += 5;
        } while (b >= 0x20);
        var dlat = ((result & 1) ? ~(result >> 1) : (result >> 1));
        lat += dlat;
        shift = 0;
        result = 0;
        do {
            b = encoded.charCodeAt(index++) - 63;
            result |= (b & 0x1f) << shift;
            shift += 5;
        } while (b >= 0x20);
        var dlng = ((result & 1) ? ~(result >> 1) : (result >> 1));
        lng += dlng;
        array.push(lat * precision);
        array.push(lng * precision);
    }
    return array;
}
//检查精度
var decompressed=解压缩(编码,6);
函数解压缩(编码,精度){
精度=数学功率(10,-精度);
var len=encoded.length,index=0,lat=0,lng=0,array=[];
while(指数>1):(结果>>1));
lat+=dlat;
移位=0;
结果=0;
做{
b=encoded.charCodeAt(index++)-63;
结果|=(b&0x1f)=0x20);
var dlng=((结果&1)~(结果>>1):(结果>>1));
液化天然气+=液化天然气;
阵列推力(横向*精度);
阵列推力(lng*精度);
}
返回数组;
}

似乎有可用于解码多段线的库:似乎有可用于解码多段线的库: