您最好使用诺基亚地图而不是 Ovi 地图,因为诺基亚地图是 Ovi 地图 API 的 2.0 版本。可以通过创建多个管理器来检索多个路由,然后使用相同的回调 - 下面的示例就是这样做的:
在示例中,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>