从谷歌地图中删除折线

时间:2011-01-28 21:00:41

标签: google-maps-api-3 polyline

我正在使用DirectionsRenderer来显示一条路径,但在我完成之后,我想删除折线并继续进行操作。我似乎无法控制由此函数创建的标记和折线。

有人知道如何删除此类折线,如果不可能,还有其他建议吗?

我现在你可以使用suppress属性,但是因为我在第一阶段使用折线,所以这并没有真正解决任何问题。

非常沮丧.. 干杯!

3 个答案:

答案 0 :(得分:2)

以下是您的问题的解决方案:使用suppressPolylines选项或从地图中删除渲染器



var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;
var time;

var pointA = new google.maps.LatLng(48.86, 2.35);
var pointB = new google.maps.LatLng(33.7167, 73.0667);

function initialize() {

  var rendererOptions = {
      map: map,
      draggable: true
    }
    // Instantiate a directions service.
  directionsDisplay = new google.maps.DirectionsRenderer(rendererOptions);

  // Create a map and center it on islamabad.
  var islamabad = new google.maps.LatLng(33.7167, 73.0667);
  var mapOptions = {
    zoom: 13,
    center: islamabad
  }
  map = new google.maps.Map(document.getElementById('map'), mapOptions);
  directionsDisplay.setMap(map);
  calcRoute();
}

function calcRoute() {
  var start = pointA;
  var end = pointB;
  var request = {
    origin: start,
    destination: end,
    travelMode: google.maps.TravelMode.DRIVING
  };
  directionsService.route(request, function(response, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setDirections(response);
    }
  });
};

function removeRoute() {
  directionsDisplay.setOptions({
    suppressPolylines: true
  });
  // this "refreshes" the renderer
  directionsDisplay.setMap(map);
};

function removeRouteNull() {
  directionsDisplay.setMap(null);
};
google.maps.event.addDomListener(window, 'load', initialize);

#map {
  height: 280px;
}

<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<button onclick="removeRoute()">Remove route (suppressPolylines)</button>
<button onclick="removeRouteNull()">Remove route (setMap(null))</button>
<button onclick="initialize()">Undo all</button>
<section id="map"></section>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这是从谷歌地图v3中删除折线的方式。希望它能帮到你。

var line = [];
 var flightPath = new google.maps.Polyline({
        path: flightPlanCoordinates, //create an array of LatLng objects
        strokeColor: "#FF0000",
        strokeOpacity: 1.0,
        strokeWeight: 2
    });
 line.push(flightPath);

现在您将所有折线对象推送到数组线。您可以通过循环将其隐藏或从地图中删除它:

for (i=0; i<line.length; i++) 
{                           
  line[i].setMap(null); //or line[i].setVisible(false);
}

答案 2 :(得分:0)

使用

  

[self.polyline setMap:nil];