2012-04-11 20 views
0

Oviマッピングを使用して、2つの異なる、接続されていないルートを表示する必要があります。しかし、私はこれを動作させることができません。 Googleマップでは、各経路のルーティングオブジェクトを定義するだけで済みましたが、これはOviでは機能しないようです。誰にどんな考えがあるのですか?1つのOviマップで2つ以上のルート

router = new ovi.mapsapi.routing.Manager(); 

    var onRouteCalculated = function(observedRouter, key, value) 
    { 
     if (value == "finished") 
     { 
      var routes = observedRouter.getRoutes(); 
      var mapRoute = new ovi.mapsapi.routing.component.RouteResultSet(routes[0]).container; 
      map.objects.add(mapRoute); 
      map.zoomTo(mapRoute.getBoundingBox(), false, "default"); 
     } 
     else if(value == "failed") 
     { 
      alert("The routing request failed."); 
     } 
    }; 

    router.addObserver("state", onRouteCalculated); 

    var waypoints = new ovi.mapsapi.routing.WaypointParameterList(); 
    waypoints.addCoordinate(new ovi.mapsapi.geo.Coordinate(x, y)) 
    // coords are ommited, but just a line for every stop point in Lat/Lng format 

    var modes = 
    [{ 
     type: "shortest", 
     transportModes: ["car"], 
     options: "avoidTollroad", 
     trafficMode: "default" 
    }]; 

    router.calculateRoute(waypoints, modes); 

別ovi.mapsapi.routing.Manager()オブジェクトを作成し、別の経路が機能しないためにその使用:参考

は、ここでつのルートのためのコードです。既存のものは、第2の経路はさらに

いずれも動作しない取り扱うまかせ私は、各マーカーにinfobubbleを表示する必要があるが、私は、彼らはあなたがノキアを使用したほうが良いでしょう

答えて

0

に存在するものの容器で見つけることができませんNokia MapsはOvi Map APIの2.0バージョンであるため、Ovi Mapsよりも地図が豊富です。

この例では、AマーカーとBマーカーは「mapRoute」というコンテナに保持されています。 routesArr []

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
     <script type="text/javascript" charset="UTF-8" src="http://api.maps.nokia.com/2.2.0/jsl.js?routing=auto"></script> 
    <title>Concurrent Routing example</title> 
</head> 
<body> 

<div id="mapContainer" style="top:30%; width:100%; height:70%; position: absolute;"></div> 

<script type="text/javascript"> 
///////////////////////////////////////////////////////////////////////////////////// 
// Don't forget to set your API credentials 
// 
// Replace with your appId and token which you can obtain when you 
// register on http://api.developer.nokia.com/ 
// 
      nokia.Settings.set("appId", "YOUR APP ID GOES HERE"); 
      nokia.Settings.set("authenticationToken", "YOUR AUTHENTICATION TOKEN GOES HERE"); 

//   
///////////////////////////////////////////////////////////////////////////////////// 


//initialize a new map 
var display = new nokia.maps.map.Display(document.getElementById("mapContainer"), 
        {  "components": [ 
            new nokia.maps.map.component.ZoomBar(),     
            new nokia.maps.map.component.Behavior(),     
            new nokia.maps.map.component.TypeSelector()],  
            "zoomLevel": 13, 
            "center" : [52.500556, 13.398889] }); 


var onAllManagersFinished = function() {  
    for (i = 0; i <routesArr.length; i++){ 

      console.log(routesArr[i]); 

     var mapRoute = new nokia.maps.routing.component.RouteResultSet(routesArr[i]).container; 
     display.objects.add(mapRoute); 
     display.zoomTo(mapRoute.getBoundingBox(), true); 
     } 
}; 

// we will use the same state observer function for all managers  

var onRouteCalculated = function (observedRouter, key, value) { 
    if (value == "finished") { 
     routesArr[observedRouter.$index] = observedRouter.getRoutes()[0]; 
     managersFinished++; 
    } else if (value == "failed") { 
     // Something has gone horribly wrong e.g. route too long. 
     alert("The routing request failed."); 
     managersFinished++; 
    } 


    if(managersFinished === waypointsArr.length) { 
      onAllManagersFinished(); 
     } 

};     



var routesArr = new Array(); 
var waypointsArr = new Array(); 
var MunichBerlin = new nokia.maps.routing.WaypointParameterList(); 
MunichBerlin.addCoordinate (new nokia.maps.geo.Coordinate(48.133333, 11.566667)); 
MunichBerlin.addCoordinate (new nokia.maps.geo.Coordinate(52.500556, 13.398889)); 

var BerlinHamburg = new nokia.maps.routing.WaypointParameterList(); 
BerlinHamburg.addCoordinate(new nokia.maps.geo.Coordinate(52.500556, 13.398889)); 
BerlinHamburg.addCoordinate(new nokia.maps.geo.Coordinate(53.565278, 10.001389)); 

waypointsArr.push(MunichBerlin); 
waypointsArr.push(BerlinHamburg); 



var i = waypointsArr.length; 
var managersFinished = 0; 

// iterate over all route requests, create a manager for each of them, 
// add the observer and call the claculateRoute method 

while(i--) {  
    var router = new nokia.maps.routing.Manager(); 
    router.$index = i; 
    router.calculateRoute(waypointsArr[i], [{ 
          type: "shortest", 
          transportModes: ["car"], 
          options: "", 
          trafficMode: "default" 
          }]); 
    router.addObserver("state", onRouteCalculated); 
} 

</script> 
</body> 
</html> 
という配列に別々のルートが保持されます。
関連する問題