javascript - 谷歌地图上的明确指示

标签 javascript routes directions

我尝试使用复选框显示/隐藏多个方向,但设置后无法隐藏或清除方向。我尝试了几件我在网上找到的东西,但没有成功。

checbox==false 我试过了

  1. directionsRenderer.setMap(null);

  2. directionsRenderer.setMap(null); directionsRenderer=空; directionsRenderer.setMap( map );

  3. 使用directionsRenderer.setMap(null);

    重复整个函数
  4. directionsDisplay.setMap(map);

和许多其他变体。 ...有什么帮助吗?

代码:

var directionsService = new google.maps.DirectionsService;
function getvoznje() {    
    if  (document.getElementById('voznje').checked==true) 
    { 
        function renderDirections(result) {
            var directionsRenderer = new google.maps.DirectionsRenderer;
            directionsRenderer.setOptions({
                preserveViewport: true,
                draggable: true,
                polylineOptions: {
                    strokeColor: "#00" + (Math.round(Math.random() * 0XFFFF)).toString(16)
                }
            });
            directionsRenderer.setMap(map);
            directionsRenderer.setDirections(result);
        }

        function requestDirections(start1, end1, start2, end2) {
            directionsService.route({
                origin: new google.maps.LatLng(start1,end1),
                destination: new google.maps.LatLng(start2,end2),
                travelMode: google.maps.DirectionsTravelMode.DRIVING
            }, function(result) {
                renderDirections(result);
            });
        }

        for (var i = 0;  i <put.length-3; i+=4){
            requestDirections(put[i], put[i+1], put[i+2], put[i+3]);
        } 

     } 

     if  (document.getElementById('voznje').checked==false)  
     {
         directionsRenderer.setMap(null);
     }
 }  

最佳答案

我会重新组织代码,这样就不会在 if 语句中创建函数。我预计这是一个可变范围问题。

null 传递给 setMap 函数以从 map 中删除方向是正确的,according to the documentation :

This method specifies the map on which directions will be rendered. Pass null to remove the directions from the map.

var directionsService = new google.maps.DirectionsService,
    directionsRenderer = new google.maps.DirectionsRenderer;
function renderDirections(result) {
    directionsRenderer.setOptions({
        preserveViewport: true,
        draggable: true,
        polylineOptions: {
            strokeColor: "#00" + (Math.round(Math.random() * 0XFFFF)).toString(16)
        }
    });
    directionsRenderer.setMap(map);
    directionsRenderer.setDirections(result);
}
function requestDirections(start1, end1, start2, end2) {
    directionsService.route({
        origin: new google.maps.LatLng(start1,end1),
        destination: new google.maps.LatLng(start2,end2),
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    }, function(result) {
        renderDirections(result);
    });
}
function getvoznje() {    
    if  (document.getElementById('voznje').checked==true) 
    { 
        for (var i = 0;  i <put.length-3; i+=4){
            requestDirections(put[i], put[i+1], put[i+2], put[i+3]);
        } 
    } 

    if  (document.getElementById('voznje').checked==false)  
    {
        directionsRenderer.setMap(null);
    }
}

关于javascript - 谷歌地图上的明确指示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047174/

相关文章:

javascript - 通过拖动 div 的边缘水平调整 div 的大小

ruby - 在公共(public)基本路线之上构建路线?

java - 如何在谷歌地图上创建从用户位置到用户选择的项目覆盖的路线/导航?

iOS MapKit 通过道路连接 map 上的多个点

android - 需要删除最后一条折线并创建当前折线

css - 单向动画

javascript - 已弃用的 Webpack 的 i18n 插件和加载器的替代品

javascript - 如何使用 JSON 源创建 Mithril.js SPA?

c# - 无法将 Kendo 网格中的大数据导出到 Excel

laravel - 带参数的Laravel路线