summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit43d2437c85ff85de2adfbef90ccd7b768d41c5bb (patch)
tree7a1ec1312304b70769a795437fd337955115825f
parentac47c0b01f857d1da49805f4e683de984c01ed5d (diff)
downloadChimère-43d2437c85ff85de2adfbef90ccd7b768d41c5bb.tar.bz2
Chimère-43d2437c85ff85de2adfbef90ccd7b768d41c5bb.zip
Mobile adaptations
-rw-r--r--chimere/static/chimere/js/jquery.chimere.js227
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 //
}
});
}