2 * Copyright (c) 2013, TOYOTA MOTOR CORPORATION.
4 * This program is licensed under the terms and conditions of the
5 * Apache License, version 2.0. The full text of the Apache License is at
6 * http://www.apache.org/licenses/LICENSE-2.0
11 * Navigation Map Class
14 var Navigation = function() {
15 var _myLatLng; // Current Location
16 var _lat = TMP_LAT; // Current Latitude
17 var _lng = TMP_LON; // Current Longitude
18 var _dir; // Current Direction
20 var _dirDisplay; // DirectionsRenderer Object
21 var _dirService; // DirectionsService Object
22 var _carMarker; // Current Location Marker
23 var _nativeAccessor; // WebSocket accessor (samplenavi)
24 var _seqnum = SEQUENCE_MODE.START; // Sequence
25 var _routeStr = ''; // Route Info
30 this.initialize = function() {
31 $('#address').text('For samplenaviConnection');
34 $(document).bind('recvSeqNxt', function(event, data) {
37 $(document).bind('recvCarInfo', function(event, data) {
40 // Initialize Location
41 _myLatLng = new google.maps.LatLng(_lat, _lng);
45 zoom: DEFAULT_ZOOM, // zoom value
46 mapTypeId: google.maps.MapTypeId.ROADMAP, // MAP TYPE
47 center: _myLatLng // Initial Position
50 _map = new google.maps.Map($('#map_canvas').get(0), mapOptions);
52 // Create current position marker
53 _carMarker = new google.maps.Marker({
59 // Set DirectionRendererOption
60 var rendererOptions = {
65 _dirDisplay = new google.maps.DirectionsRenderer(rendererOptions);
66 _dirDisplay.setMap(_map);
67 _dirDisplay.setOptions( {suppressMarkers: true} ); // Hide markers
68 _dirService = new google.maps.DirectionsService();
70 // Create WebSocket Accessor(samplenavi)
71 _nativeAccessor = new NativeAppAccessor();
72 _nativeAccessor.connectWebSocket();
74 // Request CONF ONSCREEN
75 _seqnum = SEQUENCE_MODE.CONF;
82 this.finalize = function() {
83 _nativeAccessor.disconnectWebSocket();
87 * Move Current Location
90 function changeLatLng() {
91 _myLatLng = new google.maps.LatLng(_lat, _lng);
92 _map.panTo(_myLatLng);
95 _carMarker.setPosition(_myLatLng);
101 function setRoute() {
102 if (SHOWING_ROUTE == 1) {
104 } else if (SHOWING_ROUTE == 2) {
106 } else if (SHOWING_ROUTE == 3) {
115 function setRoute1() {
117 var startStr = String(START_LAT) + ',' + String(START_LNG);
118 var goalStr = String(GOAL_LAT) + ',' + String(GOAL_LNG);
123 destination: goalStr,
126 travelMode: google.maps.DirectionsTravelMode.DRIVING, // Set DrivingMode(Car)
127 unitSystem: google.maps.DirectionsUnitSystem.METRIC, // Set Unit
128 optimizeWaypoints: true, // optimize route
129 avoidHighways: true, // Avoid highways
130 avoidTolls: true // Avoid tall road
133 _dirService.route(request, function(response, status) {
134 if (status == google.maps.DirectionsStatus.OK) {
135 _dirDisplay.setDirections(response);
137 _routeStr = "<route>";
140 for( var i = 0; i < (response.routes[0].overview_path.length); i++ ) {
141 var lat = response.routes[0].overview_path[i].lat();
142 var lng = response.routes[0].overview_path[i].lng();
143 _routeStr += String( lng ) + ',' + String( lat ) + "<BR>";
145 _routeStr += "</route>";
148 _nativeAccessor.sendRoute( _routeStr );
151 alert('google maps error:' + status);
160 function setRoute2() {
163 origin: "35.47945,139.40026",
164 destination: "35.61689,139.44791",
166 { location: "35.534845,139.437477" }
168 travelMode: google.maps.DirectionsTravelMode.DRIVING, // Set DrivingMode(Car)
169 unitSystem: google.maps.DirectionsUnitSystem.METRIC, // Set Unit
170 optimizeWaypoints: false, // optimize route
171 avoidHighways: true, // Avoid highways
172 avoidTolls: true // Avoid tall road
175 _dirService.route(request, function(response, status) {
176 if (status == google.maps.DirectionsStatus.OK) {
177 _dirDisplay.setDirections(response);
178 _routeStr = "<route>";
181 for( var i = 0; i < (response[0].overview_path.length); i++ ) {
182 var lat = response[0].overview_path[i].lat();
183 var lng = response[0].overview_path[i].lng();
184 _routeStr += String( lng ) + ',' + String( lat ) + "<BR>";
186 _routeStr += "</route>";
189 _nativeAccessor.sendRoute( _routeStr );
192 alert('google maps error:' + status);
201 function setRoute3() {
204 origin: "35.45153,139.2125",
205 destination: "35.43037,139.21579",
208 travelMode: google.maps.DirectionsTravelMode.DRIVING, // Set DrivingMode(Car)
209 unitSystem: google.maps.DirectionsUnitSystem.METRIC, // Set Unit
210 optimizeWaypoints: false, // optimize route
211 avoidHighways: true, // Avoid highways
212 avoidTolls: true // Avoid tall road
215 _dirService.route(request, function(response, status) {
216 if (status == google.maps.DirectionsStatus.OK) {
217 _dirDisplay.setDirections(response);
218 _routeStr = "<route>";
221 for( var i = 0; i < (response[0].overview_path.length); i++ ) {
222 var lat = response[0].overview_path[i].lat();
223 var lng = response[0].overview_path[i].lng();
224 _routeStr += String( lng ) + ',' + String( lat ) + "<BR>";
226 _routeStr += "</route>";
229 _nativeAccessor.sendRoute( _routeStr );
232 alert('google maps error:' + status);
240 * @param data CarInfo data
243 function recvCarinfo(data) {
250 * Receive Change Sequence
252 * @param message Receive message
255 function recvSeqNxt(data) {
256 if (data == 'TOUCH ' + EDJE_PATH + EDJE_CONF_NAME + ' nai_01' ) {
257 _nativeAccessor.sendReqDistOnScreen();
258 _seqnum = SEQUENCE_MODE.DIST;
259 } else if (data == 'TOUCH ' + EDJE_PATH + EDJE_DIST_NAME + ' nai_12') {
260 _nativeAccessor.sendReqNaviStart();
261 _nativeAccessor.sendReqCloseOnScreen();
262 _seqnum = SEQUENCE_MODE.NAVI;
265 } else if (data == 'RESULT SUCCESS') {
266 $('#address').text("OnScreen Request Success.");
267 } else if (data == 'RESULT FAILED') {
268 $('#address').text("OnScreen Request Failed.");