Google Maps api V3 Ferry 检测

Jam*_*Lee 2 google-maps-api-3

我想知道是否有办法让 api 在乘坐渡轮时通知我。我知道你可以改变avoidFerries:true 和false,但是当设置为true 时,我需要一种知道渡轮已被占用的方法,以便我可以在必要时通过外部按钮进行覆盖。我只需要一种让 gMaps 告诉我已经被占用的方法。任何建议将不胜感激。

问候。

Dr.*_*lle 5

您必须解析路线的步骤。

当一个步骤需要渡轮时,它取决于 TravelMode 如何检测它。

对于 TRANSIT,您必须检查:

    step.transit.line.vehicle.type==='FERRY'
Run Code Online (Sandbox Code Playgroud)

对于其他 TravelModes,它将是:

    step.maneuver==='ferry' 
Run Code Online (Sandbox Code Playgroud)

检测它的函数可能如下所示:

 /**
    * @param route object DirectionsRoute
    * @return array with steps where a ferry has been taken
    **/
  function get_ferries(route){
     var f=[],section;
     for(var leg=0;leg<route.legs.length;++leg){
        for(var step=0;step<route.legs[leg].steps.length;++step){
           section  = route.legs[leg].steps[step];
           if(
                section.maneuver==='ferry'  
                  ||
                (
                  section.transit
                    &&
                  section.transit.line
                    &&
                  section.transit.line.vehicle
                    &&
                  section.transit.line.vehicle.type==='FERRY'  
                )
             ){
               f.push(section);
             }
        } 
     }
     return f;
  }
Run Code Online (Sandbox Code Playgroud)

演示:

    step.transit.line.vehicle.type==='FERRY'
Run Code Online (Sandbox Code Playgroud)
    step.maneuver==='ferry' 
Run Code Online (Sandbox Code Playgroud)
 /**
    * @param route object DirectionsRoute
    * @return array with steps where a ferry has been taken
    **/
  function get_ferries(route){
     var f=[],section;
     for(var leg=0;leg<route.legs.length;++leg){
        for(var step=0;step<route.legs[leg].steps.length;++step){
           section  = route.legs[leg].steps[step];
           if(
                section.maneuver==='ferry'  
                  ||
                (
                  section.transit
                    &&
                  section.transit.line
                    &&
                  section.transit.line.vehicle
                    &&
                  section.transit.line.vehicle.type==='FERRY'  
                )
             ){
               f.push(section);
             }
        } 
     }
     return f;
  }
Run Code Online (Sandbox Code Playgroud)