Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps 谷歌地图:显示编码的多段线_Google Maps - Fatal编程技术网

Google maps 谷歌地图:显示编码的多段线

Google maps 谷歌地图:显示编码的多段线,google-maps,Google Maps,好的,我有一个多边形,它被表示为一条编码的多段线。我想把它放在地图上,但不知道语法。以下是我得到的: setRegion = new google.maps.Polyline({ locations: "}~kvHmzrr@ba\hnc@jiu@r{Zqx~@hjp@pwEhnc@zhu@zflAbxn@fhjBvqHroaAgcnAp}gAeahAtqGkngAinc@_h|@r{Zad\y|_D}_y@swg@ysg@}llBpoZqa{@xrw@~eBaaX}{uAero@uq

好的,我有一个多边形,它被表示为一条编码的多段线。我想把它放在地图上,但不知道语法。以下是我得到的:

  setRegion = new google.maps.Polyline({
    locations: "}~kvHmzrr@ba\hnc@jiu@r{Zqx~@hjp@pwEhnc@zhu@zflAbxn@fhjBvqHroaAgcnAp}gAeahAtqGkngAinc@_h|@r{Zad\y|_D}_y@swg@ysg@}llBpoZqa{@xrw@~eBaaX}{uAero@uqGadY}nr@`dYs_NquNgbjAf{l@|yh@bfc@}nr@z}q@i|i@zgz@r{ZhjFr}gApob@ff}@laIsen@dgYhdPvbIren@",
    levels: "BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB",
    strokeColor: "#FF0000",
    strokeOpacity: 0.8,
    strokeWeight: 2,
    fillColor: "#FF0000",
    fillOpacity: 0.35
  });

  setRegion.setMap(map);
这是我用。从同一页中,我得到了它的用途,即:

多段线编码将显示在中 已编码的多段线和已编码的 下面的级别字段。使用这些值 对于位置级别,当您 创建google.maps.Polyline

但是,多边形不会出现。有人知道怎么回事吗

更新

我尝试了这个,但是得到了错误
uncaughttypeerror:cannotreadproperty'encoding'of undefined

<!doctype html> 
<html> 
<head> 
<title>Test</title> 
<meta charset="iso-8859-1"> 
<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=false"></script>

<style type="text/css"> 
#map {width:670px;height:600px;}
</style> 
<script type='text/javascript'>
function initialize() {
    var myLatlng = new google.maps.LatLng(51.65905179951626, 7.3835928124999555);
    var myOptions = {
        zoom: 8,
        center: myLatlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    var map = new google.maps.Map(document.getElementById("map"), myOptions);
    var decodedPath = google.maps.geometry.encoding.decodePath("}~kvHmzrr@ba\hnc@jiu@r{Zqx~@hjp@pwEhnc@zhu@zflAbxn@fhjBvqHroaAgcnAp}gAeahAtqGkngAinc@_h|@r{Zad\y|_D}_y@swg@ysg@}llBpoZqa{@xrw@~eBaaX}{uAero@uqGadY}nr@`dYs_NquNgbjAf{l@|yh@bfc@}nr@z}q@i|i@zgz@r{ZhjFr}gApob@ff}@laIsen@dgYhdPvbIren@");
    var decodedLevels = decodeLevels("BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB");

    setRegion = new google.maps.Polyline({
        locations: decodedPath,
        levels: decodedLevels,
        strokeColor: "#FF0000",
        strokeOpacity: 1.0,
        strokeWeight: 2
    });
    setRegion.setMap(map);

}

function decodeLevels(encodedLevelsString) {
    var decodedLevels = [];

    for (var i = 0; i < encodedLevelsString.length; ++i) {
        var level = encodedLevelsString.charCodeAt(i) - 63;
        decodedLevels.push(level);
    }
    return decodedLevels;
}


</script> 
</head> 


<body onload="initialize()"> 

<div id="map"></div>

</body> 
</html>

试验
#地图{宽度:670px;高度:600px;}
函数初始化(){
var myLatlng=new google.maps.LatLng(51.65905179951626,7.3835928124999555);
变量myOptions={
缩放:8,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“map”),myOptions);
var decodedPath=google.maps.geometry.encoding.decodePath(“}~kvHmzrr@ba\hnc@jiu@r{Zqx~@hjp@pwEhnc@zhu@zflAbxn@fhjBvqHroaAgcnAp}gAeahAtqGkngAinc@_h|@r{Zad\y|u D}_y@swg@ysg}llBpoZqa{@xrw@~eBaaX}{uAero@uqGadY}nr ` dYs_nquengbjaf{l@|yh@bfc@}nr@z}q@i|i@zgz@r{ZhjFr}gApob@ff}@laIsen@dgYhdPvbIren@");
var decodedLevels=解码级别(“BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB;
setRegion=new google.maps.Polyline({
地点:decodedPath,
级别:decodedLevels,
strokeColor:#FF0000“,
笔划不透明度:1.0,
冲程重量:2
});
setRegion.setMap(map);
}
函数解码级别(encodedLevelsString){
var decodedLevels=[];
对于(变量i=0;i
google.maps.geometry.encoding.decodePath(encodedPath:string)

从该页:

var decodedPath = google.maps.geometry.encoding.decodePath(encodedPolyline);
var decodedLevels = decodeLevels(encodedLevels);

// Decode an encoded levels string into an array of levels.
function decodeLevels(encodedLevelsString) {
  var decodedLevels = [];

  for (var i = 0; i < encodedLevelsString.length; ++i) {
    var level = encodedLevelsString.charCodeAt(i) - 63;
    decodedLevels.push(level);
  }

  return decodedLevels;
}
var decodedPath=google.maps.geometry.encoding.decodePath(encodedPolyline);
var decodedLevels=解码级别(encodedLevels);
//将编码的级别字符串解码为级别数组。
函数解码级别(encodedLevelsString){
var decodedLevels=[];
对于(变量i=0;i
确保几何体库是按照以下方式加载的:


编码多段线的工作示例:

我不知道为什么,但如果将编码多段线和/或标高存储在变量中(如多段线数组的元素),则需要String()函数:

polyLayer = [
[['ynh`IcftoCyq@Ne@ncBds@EEycB'],
 ['PHIHP']],
...
];

...
for (var i = 0; i < polyLayer.length; i++) {
    poly = new google.maps.Polyline({
        ...,
        path: google.maps.geometry.encoding.decodePath(String(polyLayer[i][0])), 
        levels: decodeLevels(String(polyLayer[i][1])), 
        ...
    }); 
    poly.setMap(map);
}
polyLayer=[
[ynh]`IcftoCyq@Ne@ncBds@EEycB'],
['PHIHP']],
...
];
...
对于(变量i=0;i
您的选项中有位置:,而不是路径:!当生成器工具声明使用位置时,我注意到了这一点,但我认为这是不正确的,不确定,因为我也是新手!它似乎与path一起工作。

如果出现此错误:

Uncaught TypeError: Cannot read property 'encoding' of undefined
此时将不会加载几何图形库。将几何体库(&libraries=geometry)添加到google maps api加载中,如下所示:

<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=geometry"></script>


我尝试过这样做,但不起作用(请参见更新的问题)。正在加载几何体库?谷歌地图包含什么样的内容?几何图形库确实没有加载。但是,加载后,多段线形状仍不会显示。原始问题中包含完整的HTML代码。请尝试以下操作:在该示例中,多段线显示良好。注意:-“请注意,反斜杠被解释为字符串文字中的转义字符。此实用程序的任何输出都应将反斜杠字符转换为字符串文字中的双反斜杠。”谢谢!我改变了反斜杠和setRegion的定义方式,现在它可以工作了!杰出的