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_Google Maps Api 3 - Fatal编程技术网

Google maps 删除部分多段线

Google maps 删除部分多段线,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我正在开发一个WordPress插件,用户可以在该插件中构建路线图并在其站点上显示。在“管理”面板中,它显示地图上现有路线的预览,以及他们可以拖动到要添加到地图的新位置的标记 地图的默认缩放位置在欧洲设置。但是,如果他们在澳大利亚增加了几个站点,那么只有世界的那一部分是可见的,你将不再看到用于指定新位置的可拖动图标,这是一个问题 所以我想用fitbounds来修复它,这样它就可以始终使可拖动的标记和已经创建的路线适合屏幕。我的代码确实显示了地图上的所有位置,但因为我在访问的位置之间绘制了多段线,

我正在开发一个WordPress插件,用户可以在该插件中构建路线图并在其站点上显示。在“管理”面板中,它显示地图上现有路线的预览,以及他们可以拖动到要添加到地图的新位置的标记

地图的默认缩放位置在欧洲设置。但是,如果他们在澳大利亚增加了几个站点,那么只有世界的那一部分是可见的,你将不再看到用于指定新位置的可拖动图标,这是一个问题

所以我想用fitbounds来修复它,这样它就可以始终使可拖动的标记和已经创建的路线适合屏幕。我的代码确实显示了地图上的所有位置,但因为我在访问的位置之间绘制了多段线,它还以某种方式绘制了一条到欧洲可拖动标记的线,这是不应该做的,因为它不是路线的一部分

您可以在这里看到一个示例->

守则的一部分:

/* Draw lines between the markers */
function drawFlightPlan( flightPlanCoordinates ) {  
    var flightPath = new google.maps.Polyline({
        path: flightPlanCoordinates,
        geodesic: true,
        strokeColor: "#ad1700",
        strokeOpacity: 1.0,
        strokeWeight: 2
    });

    flightPath.setMap( map );

    fitBounds( flightPlanCoordinates );
}

/* Zoom the map so that all markers fit in the window */
function fitBounds( flightPlanCoordinates ) {
    var bounds = new google.maps.LatLngBounds ();

    /* Include this latlng value in europe, but I dont want a line going to that latng... */        
    var defaultLatlng = new google.maps.LatLng('52.378153', '4.899363');
    flightPlanCoordinates.push( defaultLatlng );

    for ( var i = 0, flightPlanLen = flightPlanCoordinates.length; i < flightPlanLen; i++ ) {
      bounds.extend ( flightPlanCoordinates[i] );
   }

   map.fitBounds( bounds );
}
/*在标记之间画线*/
函数drawFlightPlan(FlightPlan坐标){
var flightPath=new google.maps.Polyline({
路径:FlightPlan坐标,
测地线:正确,
strokeColor:#ad1700“,
笔划不透明度:1.0,
冲程重量:2
});
flightPath.setMap(map);
fitBounds(飞行平面坐标);
}
/*缩放地图,使所有标记都适合窗口*/
函数fitBounds(飞行平面坐标){
var bounds=new google.maps.LatLngBounds();
/*在欧洲包含此latlng值,但我不希望有一行指向该latlng…*/
var defaultLatlng=new google.maps.LatLng('52.378153','4.899363');
flightPlanCoordinates.push(默认LatLNG);
对于(变量i=0,flightPlanLen=flightPlanCoordinates.length;i
在澳大利亚,标记之间的线很好,但是到欧洲的线不应该在那里(通常在欧洲会有一个不同颜色的标记)

我真的不明白为什么一开始就有一条去欧洲的线路。flightPath.setMap(map);在drawFlightPlan函数中运行。直到fitBounds函数将欧洲的latlng值添加到flightPlanCoordinates数组中

我搜索了一种删除部分多段线的方法,但找不到任何有效的方法。我知道如何删除所有标记或多段线,但不删除单个多段线零件。这可能吗


有什么想法或建议如何解决这个问题,或者这是我想解决的问题吗?

在欧洲用
LatLng
初始化
bounds
而不是将
LatLng
推到
飞行平面坐标

使用对阵列的引用作为多段线的路径时,对阵列的任何更改都将影响多段线