删除谷歌地图上呈现的方向路线 [英] Remove rendered direction routes on google map

查看:114
本文介绍了删除谷歌地图上呈现的方向路线的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试在谷歌地图上呈现方向路线,我的问题是,当我尝试获取另一个方向路线以前呈现的路线不清晰。我想知道我是如何在地图上重置呈现的路线。



这里是我的代码。

 函数方向(dest,lat,lng){

$('#direction')。slideUp();
$('#results')。slideDown();
$('#dest-direction')。val(dest);

$ b $('#direction-form')。submit(function(){

var ori = $('#origin-direction').val ();

map.setZoom(7);
var currentLatLng = new google.maps.LatLng(lat,lng);
map.setCenter(currentLatLng);

var directionsRenderer = new google.maps.DirectionsRenderer();
directionsRenderer.setMap(map);
directionsRenderer.setPanel(document.getElementById('direction'));

var directionsService = new google.maps.DirectionsService();

/////////////////////
default_unit_system = google.maps.UnitSystem.METRIC;
if(current_unit ==km){
default_unit_system = google.maps.UnitSystem.METRIC;
} else if(current_unit ==英里){
default_unit_system = google.maps.UnitSystem.IMPERIAL;
}
/////////////////////

var request = {
origin:ori,
destination:lat +','+ lng,
travelMode:google.maps.DirectionsTravelMode.DRIVING,
unitSystem:default_unit_system
};
directionsService.route(request,function(response,status){
if(status == google.maps.DirectionsStatus.OK){
directionsRenderer.setDirections(response);
} else {
// alert('Error:'+ status);
$('#direction')。append('< table width =100%>< tr>< < / td>< / tr>< / table>');
}
}); td>找不到方向,请再试一次。

$('#direction-form')。nextAll()。remove();
返回false;

});



解决方案

与Dr.Molle。

然而,有一件事对于许多重叠(比如标记,比如infowindows,...)是有用的:将对象存储在一个数组中;
(如果需要的话),将该数组保留在全局范围内;
,那么你可以很容易地将它们从地图上移除。

  var renderObjects = []; 

函数clearRenderObjects(){
for(var i in renderObjects){
renderObjects [i] .setMap(null);


$ b $('#direction-form')。submit(function(){
// clear previous
clearRenderObjects();
...
var directionsRenderer = new google.maps.DirectionsRenderer();
directionsRenderer.setMap(map);
//添加到数组
renderObjects。推(directionsRenderer);
...
});


I try to render direction route on google map and my issue was, when I am try to get another direction route previously rendered route not clear. I want to know how I reset rendered route on the map.

Here my code.

function direction(dest, lat, lng) {

$('#direction').slideUp();
$('#results').slideDown();
$('#dest-direction').val(dest);


$('#direction-form').submit(function () {

    var ori = $('#origin-direction').val();

    map.setZoom(7);
    var currentLatLng = new google.maps.LatLng(lat, lng);
    map.setCenter(currentLatLng);

    var directionsRenderer = new google.maps.DirectionsRenderer();
    directionsRenderer.setMap(map);
    directionsRenderer.setPanel(document.getElementById('direction'));

    var directionsService = new google.maps.DirectionsService();

    /////////////////////
    default_unit_system = google.maps.UnitSystem.METRIC;
    if (current_unit == "km") {
        default_unit_system = google.maps.UnitSystem.METRIC;
    } else if (current_unit == "miles") {
        default_unit_system = google.maps.UnitSystem.IMPERIAL;
    }
    /////////////////////

    var request = {
        origin: ori,
        destination: lat+','+lng,
        travelMode: google.maps.DirectionsTravelMode.DRIVING,
        unitSystem: default_unit_system
    };
    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsRenderer.setDirections(response);
        } else {
            //alert('Error: ' + status);
            $('#direction').append('<table width="100%"><tr><td>Direction not found. Please try again.</td></tr></table>');
        }
    });

    $('#direction-form').nextAll().remove();
    return false;

});

}

解决方案

I agree with Dr.Molle .

Still, One thing that can be useful for many overlays (like markers, like infowindows, ...): Store the objects in an array; if needed, keep that array on the global scope; then you can easily remove them from the map.

var renderObjects = [];

function clearRenderObjects() {
  for(var i in renderObjects) {
    renderObjects[i].setMap(null);
  }
}

$('#direction-form').submit(function () {
  // clear previous
  clearRenderObjects();
  ...
  var directionsRenderer = new google.maps.DirectionsRenderer();
  directionsRenderer.setMap(map);
  // add to the array
  renderObjects.push(directionsRenderer);
  ...
});

这篇关于删除谷歌地图上呈现的方向路线的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆