diff options
| -rw-r--r-- | chimere/static/chimere/js/jquery.chimere.js | 227 | 
1 files changed, 217 insertions, 10 deletions
| diff --git a/chimere/static/chimere/js/jquery.chimere.js b/chimere/static/chimere/js/jquery.chimere.js index b0c6fa9..9e89920 100644 --- a/chimere/static/chimere/js/jquery.chimere.js +++ b/chimere/static/chimere/js/jquery.chimere.js @@ -117,8 +117,8 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {              icon_start: null,              icon_step: null,              icon_end: null, -            mobile:false, -            input_id:'id_point' +            mobile: false, +            input_id: 'id_point'          };          var settings = {};      /* @@ -552,6 +552,14 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {              settings.map.setCenter(settings.current_position);          }, +        // center from the lon lat +        mapCenterOnLonLat: function(options){ +            settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]); +            settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION, +                    settings.map.getProjectionObject()); +            settings.map.setCenter(settings.current_position); +        }, +          // set current position          setCurrentPosition: function(lonlat){              settings.current_position = lonlat; @@ -1044,6 +1052,19 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {              return feature;          }, + +        //LIB iOS +        connectWebViewJavascriptBridge: function(callback) { +                if (window.WebViewJavascriptBridge) { +                callback(WebViewJavascriptBridge); +             } else { +                    document.addEventListener('WebViewJavascriptBridgeReady', function() { +                    callback(WebViewJavascriptBridge); +                  }, false); +            } +        }, +        //fin  lib ios +          cleanRoute: function(){              settings.layerVectors.removeAllFeatures();          }, @@ -1164,8 +1185,10 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {          // set the start point for routing          routingFrom: function(){              $('#chimere_map_menu').hide(); -            settings.routing_panel_open(); -            $('#map_menu_clear').show(); +            if (!settings.mobile){ +                settings.routing_panel_open(); +                $('#map_menu_clear').show(); +            }              settings.routing_start = new OpenLayers.Marker(                                            settings.current_position.clone(),                                            settings.icon_start); @@ -1177,12 +1200,86 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {                                              'start_label');              }              if (settings.routing_end) methods.route(); +            // Added for mobile - START // +            //iOS +            methods.connectWebViewJavascriptBridge( +                function(bridge) { +                        if(!bridge){ +                            bridge.init(function(message, responseCallback) { +                                if (responseCallback) { +                                    responseCallback("Right back atcha"); +                                } +                               }); +                           } +                    bridge.send('openRouteFrom'); +            }); +            //android +            window.JSInterface.openRouteFrom(); +            // Added for mobile - END // +        }, +        // Added for mobile - START // +        // set the start point for current Position +        routingFromMyPosition: function(options){ +            $('#chimere_map_menu').hide(); +            settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]); +            settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION,  +                    settings.map.getProjectionObject()); +            settings.routing_start = new OpenLayers.Marker( +                                          settings.current_position.clone(), +                                          settings.icon_start); +            settings.layerRouteMarker.addMarker(settings.routing_start); +            if (nominatim_url){ +                helpers.updateNominatimName(settings.current_position.clone() +                                 .transform(settings.map.getProjectionObject(), +                                            EPSG_DISPLAY_PROJECTION), +                                            'start_label'); +            } +            if (settings.routing_end) methods.route(); + +            // Added for mobile - START // +            //iOS +            methods.connectWebViewJavascriptBridge( +                function(bridge) { +                        if(!bridge){ +                            bridge.init(function(message, responseCallback) { +                                if (responseCallback) { +                                    responseCallback("Right back atcha"); +                                } +                               }); +                           } +                    bridge.send('openRouteFrom'); +            }); +            //android +            window.JSInterface.openRouteFrom(); +              // Added for mobile - END // +        }, + +        updateMyCurrentPosition: function(options){ + +            if (settings.current_position_marker) { +                settings.layerMarkers.removeMarker(settings.current_position_marker)  +            } + +            var tmp_position = new OpenLayers.LonLat(options["lon"], options["lat"]); +            tmp_position = tmp_position.transform(EPSG_DISPLAY_PROJECTION,  + + +                    settings.map.getProjectionObject()); +            settings.current_position_marker = new OpenLayers.Marker( +                                          tmp_position.clone(), +                                          settings.icon_current_position); +            settings.layerRouteMarker.addMarker(settings.current_position_marker);          }, + +        // Added for mobile - END // +          // add a step point for routing          routingAddStep: function(){              $('#chimere_map_menu').hide(); -            settings.routing_panel_open(); -            $('#map_menu_clear').show(); +            if (!settings.mobile){ +                settings.routing_panel_open(); +                $('#map_menu_clear').show(); +            }              settings.routing_steps.push(new OpenLayers.Marker(                                            settings.current_position.clone(),                                            settings.icon_step.clone())); @@ -1241,8 +1338,10 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {          // set the finish point for routing          routingTo: function(){              $('#chimere_map_menu').hide(); -            settings.routing_panel_open(); -            $('#map_menu_clear').show(); +            if (!settings.mobile){ +                settings.routing_panel_open(); +                $('#map_menu_clear').show(); +            }              settings.routing_end = new OpenLayers.Marker(                                            settings.current_position.clone(),                                            settings.icon_end); @@ -1254,8 +1353,64 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {                                              'end_label');              }              if (settings.routing_start) methods.route(); + +            // Added for mobile - START // +            //iOS +            methods.connectWebViewJavascriptBridge( +                function(bridge) { +                        if(!bridge){ +                            bridge.init(function(message, responseCallback) { +                                if (responseCallback) { +                                    responseCallback("Right back atcha"); +                                } +                               }); +                           } +                    bridge.send('openRouteTo'); +            }); +            //Android +            window.JSInterface.openRouteTo(); +            // Added for mobile - END // +        }, +        // set the finish point for current Position +        routingToPosition: function(options){ +            $('#chimere_map_menu').hide(); +            if (!settings.mobile){ +                settings.routing_panel_open(); +                $('#map_menu_clear').show(); +            } +            settings.current_position = new OpenLayers.LonLat(options["lon"], options["lat"]); +            settings.current_position = settings.current_position.transform(EPSG_DISPLAY_PROJECTION,  +                    settings.map.getProjectionObject()); +            settings.routing_end = new OpenLayers.Marker( +                                          settings.current_position.clone(), +                                          settings.icon_end); +            settings.layerRouteMarker.addMarker(settings.routing_end); +            if (nominatim_url){ +                helpers.updateNominatimName(settings.current_position.clone() +                                 .transform(settings.map.getProjectionObject(), +                                            EPSG_DISPLAY_PROJECTION), +                                            'end_label'); +            } +            if (settings.routing_start) methods.route(); +            // Added for mobile - START // +            //iOS +            methods.connectWebViewJavascriptBridge( +                function(bridge) { +                        if(!bridge){ +                            bridge.init(function(message, responseCallback) { +                                if (responseCallback) { +                                    responseCallback("Right back atcha"); +                                } +                               }); +                           } +                    bridge.send('openRouteTo'); +            }); +            //Android +            window.JSInterface.openRouteTo(); +            // Added for mobile - END //          }, +          // clear the current itinerary          routingClear: function(){              $('#nominatim_start_lon').val(''); @@ -1361,11 +1516,30 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {                                              data.properties.description);                          $('#chimere_itinerary').show();                          if(!settings.edition_type_is_route){ -                            $('#chimere_itinerary_form').hide(); -                            settings.routing_panel_open(); +                            if (!settings.mobile){ +                                $('#chimere_itinerary_form').hide(); +                                settings.routing_panel_open(); +                            }                          } else {                              methods.updateRoutingInput();                          } +                        // Added for mobile - START // +                        //iOS +                        methods.connectWebViewJavascriptBridge( +                            function(bridge) { +                                    if(!bridge){ +                                        bridge.init(function(message, responseCallback) { +                                        if (responseCallback) { +                                            responseCallback("Right back atcha"); +                                        } +                                       }); +                                   } +                            bridge.send('routeCalculated:'+data.properties.total); +                            bridge.send('routeCalculatedDetail:'+data.properties.description); +                        });  +                        //android +                        window.JSInterface.routeCalculated(data.properties.total, data.properties.description); +                        // Added for mobile - START //                      },                      error: function (jqXHR, textStatus, errorThrown) {                          methods.redrawRoutingIcons(); @@ -1855,6 +2029,39 @@ OpenLayers.Layer.MapQuestOSM = OpenLayers.Class(OpenLayers.Layer.XYZ, {                      $('#'+response_id).html(vals.display_name);                      $('#nominatim_'+response_id).html(vals.display_name);                      $('#chimere_'+response_id).html(vals.display_name); +                    // Added for mobile - START // +                    if (response_id === 'start_label') { +                        //iOS +                        methods.connectWebViewJavascriptBridge( +                            function(bridge) { +                                if(!bridge){ +                                        bridge.init(function(message, responseCallback) { +                                            if (responseCallback) { +                                                responseCallback("Right back atcha"); +                                            } +                                           }); +                                       } +                                   bridge.send('updateFrom:'+vals.display_name); +                           }); +                        //android +                        window.JSInterface.updateFrom(vals.display_name); +                    } else if (response_id === 'end_label') { +                        //iOS +                        methods.connectWebViewJavascriptBridge( +                            function(bridge) { +                                if(!bridge){ +                                        bridge.init(function(message, responseCallback) { +                                            if (responseCallback) { +                                                responseCallback("Right back atcha"); +                                            } +                                           }); +                                       } +                                       bridge.send('updateTo:'+vals.display_name); +                           });  +                           //android +                              window.JSInterface.updateTo(vals.display_name); +                    } +                    // Added for mobile - END //                  }              });          } | 
