diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-06-04 23:53:37 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-06-04 23:53:37 +0200 |
commit | 43d2437c85ff85de2adfbef90ccd7b768d41c5bb (patch) | |
tree | 7a1ec1312304b70769a795437fd337955115825f | |
parent | ac47c0b01f857d1da49805f4e683de984c01ed5d (diff) | |
download | Chimère-43d2437c85ff85de2adfbef90ccd7b768d41c5bb.tar.bz2 Chimère-43d2437c85ff85de2adfbef90ccd7b768d41c5bb.zip |
Mobile adaptations
-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 // } }); } |