* Speed improvement

* Rewritten js classes
* Added Temperature chart
* Added HTML5 Gps position (you can now follow the gpx with your mobile phone/tablet/pc)
This commit is contained in:
bastianonm 2014-03-14 13:38:36 +00:00
parent c3d9848749
commit 410253dd4a
5 changed files with 1305 additions and 1070 deletions

View File

@ -1,44 +1,16 @@
/* /*
Plugin Name: WP-GPX-Maps
WP-GPX-Maps Plugin URI: http://www.devfarm.it/
Description: Draws a gpx track with altitude graph
Version: 1.3.0
Author: Bastianon Massimo
Author URI: http://www.pedemontanadelgrappa.it/
*/ */
var t; (function ( $ ) {
var funqueue = [];
var infowindow;
var mapLoading = false;
var CustomMarker;
var wrapFunction = function(fn, context, params) { var infowindow;
return function() { var CustomMarker;
fn.apply(context, params);
};
}
function wpgpxmaps(params)
{
funqueue.push( wrapFunction(_wpgpxmaps, this, [params]));
unqueue();
}
function unqueue()
{
if (google == undefined || google.maps == undefined || Highcharts == undefined)
{
t = setTimeout("unqueue()",200);
}
else
{
setup();
while (funqueue.length > 0) {
(funqueue.shift())();
}
}
}
function setup()
{
CustomMarker = function( map, latlng, src, img_w, img_h) { CustomMarker = function( map, latlng, src, img_w, img_h) {
this.latlng_ = latlng; this.latlng_ = latlng;
@ -115,20 +87,7 @@ function setup()
} }
}; };
} $.fn.wpgpxmaps = function( params ) {
function get_random_color() {
var letters = '0123456789ABCDEF'.split('');
var color = '#';
for (var i = 0; i < 6; i++ ) {
color += letters[Math.round(Math.random() * 15)];
}
return color;
}
function _wpgpxmaps(params)
{
var targetId = params.targetId; var targetId = params.targetId;
var mapType = params.mapType; var mapType = params.mapType;
@ -137,6 +96,7 @@ function _wpgpxmaps(params)
var graphEle = params.graphEle; var graphEle = params.graphEle;
var graphSpeed = params.graphSpeed; var graphSpeed = params.graphSpeed;
var graphHr = params.graphHr; var graphHr = params.graphHr;
var graphAtemp = params.graphAtemp;
var graphCad = params.graphCad; var graphCad = params.graphCad;
var graphGrade = params.graphGrade; var graphGrade = params.graphGrade;
var waypoints = params.waypoints; var waypoints = params.waypoints;
@ -148,6 +108,7 @@ function _wpgpxmaps(params)
var color4 = params.color4; var color4 = params.color4;
var color5 = params.color5; var color5 = params.color5;
var color6 = params.color6; var color6 = params.color6;
var color7 = params.color7;
var chartFrom1 = params.chartFrom1; var chartFrom1 = params.chartFrom1;
var chartTo1 = params.chartTo1; var chartTo1 = params.chartTo1;
var chartFrom2 = params.chartFrom2; var chartFrom2 = params.chartFrom2;
@ -159,6 +120,8 @@ function _wpgpxmaps(params)
var zoomOnScrollWheel = params.zoomOnScrollWheel; var zoomOnScrollWheel = params.zoomOnScrollWheel;
var lng = params.langs; var lng = params.langs;
var pluginUrl = params.pluginUrl; var pluginUrl = params.pluginUrl;
var usegpsposition = params.usegpsposition;
var currentpositioncon= params.currentpositioncon;
// Unit of measure settings // Unit of measure settings
var l_s; var l_s;
@ -316,11 +279,66 @@ function _wpgpxmaps(params)
return false; return false;
}); });
controlDiv.index = 1; controlDiv.index = 1;
map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv); map.controls[google.maps.ControlPosition.TOP_RIGHT].push(controlDiv);
var bounds = new google.maps.LatLngBounds(); var bounds = new google.maps.LatLngBounds();
var markerCurrentPosition = null;
if ( usegpsposition == "true" )
{
// Try HTML5 geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
// user position
var pos = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
// draw current position marker
markerCurrentPosition = new google.maps.Marker({
position: pos,
map: map,
title: "you",
animation: google.maps.Animation.DROP,
zIndex: 10
});
if (currentpositioncon)
{
markerCurrentPosition.setIcon(currentpositioncon);
}
bounds.extend(pos);
map.setCenter(bounds.getCenter());
map.fitBounds(bounds);
}, function() {});
navigator.geolocation.watchPosition(function(position){
// move current position marker
if (markerCurrentPosition != null)
{
markerCurrentPosition.setPosition(new google.maps.LatLng(position.coords.latitude, position.coords.longitude));
}
},
function(e){
// some errors
},
{
enableHighAccuracy: false,
timeout: 5000,
maximumAge: 0
});
}
}
// Print WayPoints // Print WayPoints
if (waypoints != '') if (waypoints != '')
{ {
@ -648,7 +666,7 @@ function _wpgpxmaps(params)
var graphh = jQuery('#hchart_' + params.targetId).css("height"); var graphh = jQuery('#hchart_' + params.targetId).css("height");
if (graphDist != '' && (graphEle != '' || graphSpeed != '' || graphHr != '' || graphCad != '') && graphh != "0px") if (graphDist != '' && (graphEle != '' || graphSpeed != '' || graphHr != '' || graphAtemp != '' || graphCad != '') && graphh != "0px")
{ {
var valLen = graphDist.length; var valLen = graphDist.length;
@ -995,6 +1013,48 @@ function _wpgpxmaps(params)
l_y_arr.push(l_hr); l_y_arr.push(l_hr);
} }
if (graphAtemp != '')
{
var atempData = [];
for (i=0; i<valLen; i++)
{
if (graphDist[i] != null)
{
var c = graphAtemp[i];
if (c==0)
c = null;
atempData.push([graphDist[i],c]);
}
}
var yaxe = {
title: { text: null },
labels: {
//align: 'right',
formatter: function() {
return Highcharts.numberFormat(this.value, 1, decPoint,thousandsSep) + " °C";
}
},
opposite: true
}
hoptions.yAxis.push(yaxe);
hoptions.series.push({
name: lng.atemp,
lineWidth: 1,
marker: { radius: 0 },
data : atempData,
color: color7,
yAxis: hoptions.series.length
});
l_y_arr.push({ suf : "°C", dec : 1 });
}
if (graphCad != '') if (graphCad != '')
{ {
@ -1082,10 +1142,11 @@ function _wpgpxmaps(params)
jQuery("#hchart_" + params.targetId).css("display","none"); jQuery("#hchart_" + params.targetId).css("display","none");
} }
} return this;
};
function addWayPoint(map, image, shadow, lat, lon, title, descr) function addWayPoint(map, image, shadow, lat, lon, title, descr)
{ {
var p = new google.maps.LatLng(lat, lon); var p = new google.maps.LatLng(lat, lon);
var m = new google.maps.Marker({ var m = new google.maps.Marker({
position: p, position: p,
@ -1096,6 +1157,7 @@ function addWayPoint(map, image, shadow, lat, lon, title, descr)
icon: image, icon: image,
zIndex: 5 zIndex: 5
}); });
google.maps.event.addListener(m, 'mouseover', function() { google.maps.event.addListener(m, 'mouseover', function() {
if (infowindow) if (infowindow)
{ {
@ -1113,10 +1175,10 @@ function addWayPoint(map, image, shadow, lat, lon, title, descr)
infowindow = new google.maps.InfoWindow({ content: cnt}); infowindow = new google.maps.InfoWindow({ content: cnt});
infowindow.open(map,m); infowindow.open(map,m);
}); });
} }
function getItemFromArray(arr,index) function getItemFromArray(arr,index)
{ {
try try
{ {
return arr[index]; return arr[index];
@ -1125,11 +1187,11 @@ function getItemFromArray(arr,index)
{ {
return [0,0]; return [0,0];
} }
} }
function getClosestIndex(points,lat,lon) function getClosestIndex(points,lat,lon)
{ {
var dd=10000; var dd=10000;
var ii=0; var ii=0;
for (i=0; i < points.length; i++) for (i=0; i < points.length; i++)
@ -1145,10 +1207,10 @@ function getClosestIndex(points,lat,lon)
} }
} }
return ii; return ii;
} }
function getClosestImage(lat,lon,targetId) function getClosestImage(lat,lon,targetId)
{ {
var dd=10000; var dd=10000;
var img; var img;
var divImages = document.getElementById("ngimages_"+targetId); var divImages = document.getElementById("ngimages_"+targetId);
@ -1168,17 +1230,19 @@ function getClosestImage(lat,lon,targetId)
} }
} }
return img; return img;
} }
function isNumeric(input){ function isNumeric(input){
var RE = /^-{0,1}\d*\.{0,1}\d+$/; var RE = /^-{0,1}\d*\.{0,1}\d+$/;
return (RE.test(input)); return (RE.test(input));
} }
function dist(lat1,lon1,lat2,lon2) function dist(lat1,lon1,lat2,lon2)
{ {
// mathematically not correct but fast // mathematically not correct but fast
var dLat = (lat2-lat1); var dLat = (lat2-lat1);
var dLon = (lon2-lon1); var dLon = (lon2-lon1);
return Math.sqrt(dLat * dLat + dLon * dLon); return Math.sqrt(dLat * dLat + dLon * dLon);
} }
}( jQuery ));

View File

@ -5,7 +5,7 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
Tags: maps, gpx, gps, graph, chart, google maps, track, garmin, image, nextgen-gallery, nextgen, exif, OpenStreetMap, OpenCycleMap, Hike&Bike, heart rate, heartrate, cadence Tags: maps, gpx, gps, graph, chart, google maps, track, garmin, image, nextgen-gallery, nextgen, exif, OpenStreetMap, OpenCycleMap, Hike&Bike, heart rate, heartrate, cadence
Requires at least: 2.0.0 Requires at least: 2.0.0
Tested up to: 3.8 Tested up to: 3.8
Stable tag: 1.2.6 Stable tag: 1.3.0
Draws a gpx track with altitude graph. You can also display your nextgen gallery images in the map. Draws a gpx track with altitude graph. You can also display your nextgen gallery images in the map.
@ -14,11 +14,18 @@ Draws a gpx track with altitude graph. You can also display your nextgen gallery
This plugin has, as input, the GPX file with the track you've made and as output it shows the map of the track and an interactive altitude graph (where available). This plugin has, as input, the GPX file with the track you've made and as output it shows the map of the track and an interactive altitude graph (where available).
Fully configurable: Fully configurable:
- Custom colors - Custom colors
- Custom icons - Custom icons
- Multiple language support - Multiple language support
Supported charts:
- Altitude
- Speed
- Heart Rate
- Temperature
- Cadence
- Grade
NextGen Gallery Integration: NextGen Gallery Integration:
Display your NextGen Gallery images inside the map! Display your NextGen Gallery images inside the map!
@ -180,6 +187,11 @@ Yes!
1. Altitude & Speed & Hearth rate 1. Altitude & Speed & Hearth rate
== Changelog == == Changelog ==
= 1.3.0 =
* Speed improvement
* Rewritten js classes
* Added Temperature chart
* Added HTML5 Gps position (you can now follow the gpx with your mobile phone/tablet/pc)
= 1.2.6 = = 1.2.6 =
* Speed improvement * Speed improvement
= 1.2.5 = = 1.2.5 =

View File

@ -3,7 +3,7 @@
Plugin Name: WP-GPX-Maps Plugin Name: WP-GPX-Maps
Plugin URI: http://www.devfarm.it/ Plugin URI: http://www.devfarm.it/
Description: Draws a gpx track with altitude graph Description: Draws a gpx track with altitude graph
Version: 1.2.6 Version: 1.3.0
Author: Bastianon Massimo Author: Bastianon Massimo
Author URI: http://www.pedemontanadelgrappa.it/ Author URI: http://www.pedemontanadelgrappa.it/
*/ */
@ -14,6 +14,7 @@ include 'wp-gpx-maps_utils.php';
include 'wp-gpx-maps_admin.php'; include 'wp-gpx-maps_admin.php';
add_shortcode('sgpx','handle_WP_GPX_Maps_Shortcodes'); add_shortcode('sgpx','handle_WP_GPX_Maps_Shortcodes');
add_shortcode('sgpxf','handle_WP_GPX_Maps_folder_Shortcodes');
register_activation_hook(__FILE__,'WP_GPX_Maps_install'); register_activation_hook(__FILE__,'WP_GPX_Maps_install');
register_deactivation_hook( __FILE__, 'WP_GPX_Maps_remove'); register_deactivation_hook( __FILE__, 'WP_GPX_Maps_remove');
add_filter('plugin_action_links', 'WP_GPX_Maps_action_links', 10, 2); add_filter('plugin_action_links', 'WP_GPX_Maps_action_links', 10, 2);
@ -59,7 +60,7 @@ function enqueue_WP_GPX_Maps_scripts()
wp_enqueue_script( 'highcharts' ); wp_enqueue_script( 'highcharts' );
wp_deregister_script( 'WP-GPX-Maps' ); wp_deregister_script( 'WP-GPX-Maps' );
wp_register_script( 'WP-GPX-Maps', plugins_url('/WP-GPX-Maps.js', __FILE__), array('jquery','googlemaps','highcharts'), "1.2.3"); wp_register_script( 'WP-GPX-Maps', plugins_url('/WP-GPX-Maps.js', __FILE__), array('jquery','googlemaps','highcharts'), "1.3.0");
wp_enqueue_script( 'WP-GPX-Maps' ); wp_enqueue_script( 'WP-GPX-Maps' );
} }
@ -100,6 +101,84 @@ function findValue($attr, $attributeName, $optionName, $defaultValue)
return $val; return $val;
} }
function handle_WP_GPX_Maps_folder_Shortcodes($attr, $content=''){
$folder = findValue($attr, "folder", "", "");
$pointsoffset = findValue($attr, "pointsoffset", "wpgpxmaps_pointsoffset", 10);
$distanceType = findValue($attr, "distanceType", "wpgpxmaps_distance_type", 0);
$donotreducegpx = findValue($attr, "donotreducegpx", "wpgpxmaps_donotreducegpx", false);
$uom = findValue($attr, "uom", "wpgpxmaps_unit_of_measure", "0");
// fix folder path
$sitePath = sitePath();
$folder = trim($folder);
$folder = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $folder);
$folder = $sitePath . $folder;
$files = scandir($folder);
foreach($files as $file) {
if (substr($file, - 4) == ".gpx" ) {
$gpx = $folder . DIRECTORY_SEPARATOR . $file;
$points = getPoints($gpx, $pointsoffset, $donotreducegpx, $distanceType);
$points_maps = '';
$points_graph_dist = '';
$points_graph_ele = '';
if (is_array ($points_x_lat))
foreach(array_keys($points_x_lat) as $i) {
$_lat = (float)$points_x_lat[$i];
$_lon = (float)$points_x_lon[$i];
if ( $_lat == 0 && $_lon == 0 )
{
$points_maps .= 'null,';
$points_graph_dist .= 'null,';
$points_graph_ele .= 'null,';
}
else {
$points_maps .= '['.number_format((float)$points_x_lat[$i], 7 , '.' , '' ).','.number_format((float)$points_x_lon[$i], 7 , '.' , '' ).'],';
$_ele = (float)$points->ele[$i];
$_dist = (float)$points->dist[$i];
if ($uom == '1')
{
// Miles and feet
$_dist *= 0.000621371192;
$_ele *= 3.2808399;
} else if ($uom == '2')
{
// meters / kilometers
$_dist = (float)($_dist / 1000);
} else if ($uom == '3')
{
// meters / kilometers / nautical miles
$_dist = (float)($_dist / 1000 / 1.852);
} else if ($uom == '4')
{
// meters / miles
$_dist *= 0.000621371192;
}
$points_graph_dist .= number_format ( $_dist , 2 , '.' , '' ).',';
$points_graph_ele .= number_format ( $_ele , 2 , '.' , '' ).',';
}
}
print_r($points);
}
}
}
function handle_WP_GPX_Maps_Shortcodes($attr, $content='') function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
{ {
@ -112,6 +191,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$gh = findValue($attr, "gheight", "wpgpxmaps_graph_height", "200px"); $gh = findValue($attr, "gheight", "wpgpxmaps_graph_height", "200px");
$showCad = findValue($attr, "showcad", "wpgpxmaps_show_cadence", false); $showCad = findValue($attr, "showcad", "wpgpxmaps_show_cadence", false);
$showHr = findValue($attr, "showhr", "wpgpxmaps_show_hr", false); $showHr = findValue($attr, "showhr", "wpgpxmaps_show_hr", false);
$showAtemp = findValue($attr, "showatemp", "wpgpxmaps_show_atemp", false);
$showW = findValue($attr, "waypoints", "wpgpxmaps_show_waypoint", false); $showW = findValue($attr, "waypoints", "wpgpxmaps_show_waypoint", false);
$showEle = findValue($attr, "showele", "wpgpxmaps_show_elevation", "true"); $showEle = findValue($attr, "showele", "wpgpxmaps_show_elevation", "true");
$showSpeed = findValue($attr, "showspeed", "wpgpxmaps_show_speed", false); $showSpeed = findValue($attr, "showspeed", "wpgpxmaps_show_speed", false);
@ -125,6 +205,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$color_graph = findValue($attr, "glinecolor", "wpgpxmaps_graph_line_color", "#3366cc"); $color_graph = findValue($attr, "glinecolor", "wpgpxmaps_graph_line_color", "#3366cc");
$color_graph_speed = findValue($attr, "glinecolorspeed", "wpgpxmaps_graph_line_color_speed", "#ff0000"); $color_graph_speed = findValue($attr, "glinecolorspeed", "wpgpxmaps_graph_line_color_speed", "#ff0000");
$color_graph_hr = findValue($attr, "glinecolorhr", "wpgpxmaps_graph_line_color_hr", "#ff77bd"); $color_graph_hr = findValue($attr, "glinecolorhr", "wpgpxmaps_graph_line_color_hr", "#ff77bd");
$color_graph_atemp = findValue($attr, "glinecoloratemp", "wpgpxmaps_graph_line_color_atemp", "#ff77bd");
$color_graph_cad = findValue($attr, "glinecolorcad", "wpgpxmaps_graph_line_color_cad", "#beecff"); $color_graph_cad = findValue($attr, "glinecolorcad", "wpgpxmaps_graph_line_color_cad", "#beecff");
$color_graph_grade = findValue($attr, "glinecolorgrade", "wpgpxmaps_graph_line_color_grade", "#beecff"); $color_graph_grade = findValue($attr, "glinecolorgrade", "wpgpxmaps_graph_line_color_grade", "#beecff");
@ -153,12 +234,15 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$p_avg_speed = findValue($attr, "summaryavgspeed", "wpgpxmaps_summary_avg_speed", false); $p_avg_speed = findValue($attr, "summaryavgspeed", "wpgpxmaps_summary_avg_speed", false);
$p_total_time = findValue($attr, "summarytotaltime", "wpgpxmaps_summary_total_time", false); $p_total_time = findValue($attr, "summarytotaltime", "wpgpxmaps_summary_total_time", false);
$usegpsposition = findValue($attr, "usegpsposition", "wpgpxmaps_usegpsposition", false);
$currentpositioncon = findValue($attr, "currentpositioncon", "wpgpxmaps_currentpositioncon", "");
$colors_map = "\"".implode("\",\"",(explode(" ",$color_map)))."\""; $colors_map = "\"".implode("\",\"",(explode(" ",$color_map)))."\"";
$gpxurl = $gpx; $gpxurl = $gpx;
$cacheFileName = "$gpx,$w,$mh,$mt,$gh,$showEle,$showW,$showHr,$showCad,$donotreducegpx,$pointsoffset,$showSpeed,$showGrade,$uomspeed,$uom,$distanceType,v1.1.38"; $cacheFileName = "$gpx,$w,$mh,$mt,$gh,$showEle,$showW,$showHr,$showAtemp,$showCad,$donotreducegpx,$pointsoffset,$showSpeed,$showGrade,$uomspeed,$uom,$distanceType,v1.2.7";
$cacheFileName = md5($cacheFileName); $cacheFileName = md5($cacheFileName);
@ -183,6 +267,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = $cache_obj["points_graph_ele"]; $points_graph_ele = $cache_obj["points_graph_ele"];
$points_graph_speed = $cache_obj["points_graph_speed"]; $points_graph_speed = $cache_obj["points_graph_speed"];
$points_graph_hr = $cache_obj["points_graph_hr"]; $points_graph_hr = $cache_obj["points_graph_hr"];
$points_graph_atemp = $cache_obj["points_graph_atemp"];
$points_graph_cad = $cache_obj["points_graph_cad"]; $points_graph_cad = $cache_obj["points_graph_cad"];
$points_graph_grade = $cache_obj["points_graph_grade"]; $points_graph_grade = $cache_obj["points_graph_grade"];
$waypoints = $cache_obj["waypoints"]; $waypoints = $cache_obj["waypoints"];
@ -204,6 +289,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = ''; $points_graph_ele = '';
$points_graph_speed = ''; $points_graph_speed = '';
$points_graph_hr = ''; $points_graph_hr = '';
$points_graph_atemp = '';
$points_graph_cad = ''; $points_graph_cad = '';
$points_graph_grade = ''; $points_graph_grade = '';
$waypoints= ''; $waypoints= '';
@ -246,6 +332,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = ''; $points_graph_ele = '';
$points_graph_speed = ''; $points_graph_speed = '';
$points_graph_hr = ''; $points_graph_hr = '';
$points_graph_atemp = '';
$points_graph_cad = ''; $points_graph_cad = '';
$points_graph_grade = ''; $points_graph_grade = '';
$waypoints = ''; $waypoints = '';
@ -281,6 +368,9 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
if ($showHr == true) if ($showHr == true)
$points_graph_hr .= 'null,'; $points_graph_hr .= 'null,';
if ($showAtemp == true)
$points_graph_atemp .= 'null,';
if ($showCad == true) if ($showCad == true)
$points_graph_cad .= 'null,'; $points_graph_cad .= 'null,';
@ -327,6 +417,10 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_hr .= number_format ( $points->hr[$i] , 2 , '.' , '' ).','; $points_graph_hr .= number_format ( $points->hr[$i] , 2 , '.' , '' ).',';
} }
if ($showAtemp == true) {
$points_graph_atemp .= number_format ( $points->atemp[$i] , 1 , '.' , '' ).',';
}
if ($showCad == true) { if ($showCad == true) {
$points_graph_cad .= number_format ( $points->cad[$i] , 2 , '.' , '' ).','; $points_graph_cad .= number_format ( $points->cad[$i] , 2 , '.' , '' ).',';
} }
@ -401,6 +495,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = preg_replace($p, "", $points_graph_ele); $points_graph_ele = preg_replace($p, "", $points_graph_ele);
$points_graph_speed = preg_replace($p, "", $points_graph_speed); $points_graph_speed = preg_replace($p, "", $points_graph_speed);
$points_graph_hr = preg_replace($p, "", $points_graph_hr); $points_graph_hr = preg_replace($p, "", $points_graph_hr);
$points_graph_atemp = preg_replace($p, "", $points_graph_atemp);
$points_graph_cad = preg_replace($p, "", $points_graph_cad); $points_graph_cad = preg_replace($p, "", $points_graph_cad);
$points_graph_grade = preg_replace($p, "", $points_graph_grade); $points_graph_grade = preg_replace($p, "", $points_graph_grade);
@ -418,8 +513,11 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
if (preg_match("/^(0,?)+$/", $points_graph_hr)) if (preg_match("/^(0,?)+$/", $points_graph_hr))
$points_graph_hr = ""; $points_graph_hr = "";
if (preg_match("/^(0,?)+$/", $points_graph_cad)) if (preg_match("/^(0,?)+$/", $points_graph_hr))
$points_graph_cad = ""; $points_graph_hr = "";
if (preg_match("/^(0,?)+$/", $points_graph_atemp))
$points_graph_atemp = "";
if (preg_match("/^(0,?)+$/", $points_graph_grade)) if (preg_match("/^(0,?)+$/", $points_graph_grade))
$points_graph_grade = ""; $points_graph_grade = "";
@ -451,6 +549,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
"points_graph_ele" => $points_graph_ele, "points_graph_ele" => $points_graph_ele,
"points_graph_speed" => $points_graph_speed, "points_graph_speed" => $points_graph_speed,
"points_graph_hr" => $points_graph_hr, "points_graph_hr" => $points_graph_hr,
"points_graph_atemp" => $points_graph_atemp,
"points_graph_cad" => $points_graph_cad, "points_graph_cad" => $points_graph_cad,
"points_graph_grade" => $points_graph_grade, "points_graph_grade" => $points_graph_grade,
"waypoints" => $waypoints, "waypoints" => $waypoints,
@ -474,7 +573,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$r = $post->ID."_".rand(1,5000000); $r = $post->ID."_".rand(1,5000000);
$output = ' $output = '
<div id="wpgpxmaps_'.$r.'" class="wpgpxmaps"> <div id="" class="wpgpxmaps">
<div id="map_'.$r.'" style="width:'.$w.'; height:'.$mh.'"></div> <div id="map_'.$r.'" style="width:'.$w.'; height:'.$mh.'"></div>
<div id="hchart_'.$r.'" class="plot" style="width:'.$w.'; height:'.$gh.'"></div> <div id="hchart_'.$r.'" class="plot" style="width:'.$w.'; height:'.$gh.'"></div>
<div id="ngimages_'.$r.'" class="ngimages" style="display:none">'.$ngimgs_data.'</div> <div id="ngimages_'.$r.'" class="ngimages" style="display:none">'.$ngimgs_data.'</div>
@ -482,14 +581,14 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
</div> </div>
'. $error .' '. $error .'
<script type="text/javascript"> <script type="text/javascript">
jQuery(document).ready(function() { jQuery("#wpgpxmaps_'.$r.'").wpgpxmaps({ targetId : "'.$r.'",
wpgpxmaps({ targetId : "'.$r.'",
mapType : "'.$mt.'", mapType : "'.$mt.'",
mapData : ['.$points_maps.'], mapData : ['.$points_maps.'],
graphDist : ['.($hideGraph ? '' : $points_graph_dist).'], graphDist : ['.($hideGraph ? '' : $points_graph_dist).'],
graphEle : ['.($hideGraph ? '' : $points_graph_ele).'], graphEle : ['.($hideGraph ? '' : $points_graph_ele).'],
graphSpeed : ['.($hideGraph ? '' : $points_graph_speed).'], graphSpeed : ['.($hideGraph ? '' : $points_graph_speed).'],
graphHr : ['.($hideGraph ? '' : $points_graph_hr).'], graphHr : ['.($hideGraph ? '' : $points_graph_hr).'],
graphAtemp : ['.($hideGraph ? '' : $points_graph_atemp).'],
graphCad : ['.($hideGraph ? '' : $points_graph_cad).'], graphCad : ['.($hideGraph ? '' : $points_graph_cad).'],
graphGrade : ['.($hideGraph ? '' : $points_graph_grade).'], graphGrade : ['.($hideGraph ? '' : $points_graph_grade).'],
waypoints : ['.$waypoints.'], waypoints : ['.$waypoints.'],
@ -501,6 +600,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
color4 : "'.$color_graph_hr.'", color4 : "'.$color_graph_hr.'",
color5 : "'.$color_graph_cad.'", color5 : "'.$color_graph_cad.'",
color6 : "'.$color_graph_grade.'", color6 : "'.$color_graph_grade.'",
color7 : "'.$color_graph_atemp.'",
chartFrom1 : "'.$chartFrom1.'", chartFrom1 : "'.$chartFrom1.'",
chartTo1 : "'.$chartTo1.'", chartTo1 : "'.$chartTo1.'",
chartFrom2 : "'.$chartFrom2.'", chartFrom2 : "'.$chartFrom2.'",
@ -509,6 +609,8 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
endIcon : "'.$endIcon.'", endIcon : "'.$endIcon.'",
currentIcon : "'.$currentIcon.'", currentIcon : "'.$currentIcon.'",
waypointIcon : "'.$waypointIcon.'", waypointIcon : "'.$waypointIcon.'",
currentpositioncon : "'.$currentpositioncon.'",
usegpsposition : "'.$usegpsposition.'",
zoomOnScrollWheel : "'.$zoomOnScrollWheel.'", zoomOnScrollWheel : "'.$zoomOnScrollWheel.'",
ngGalleries : ['.$ngGalleries.'], ngGalleries : ['.$ngGalleries.'],
ngImages : ['.$ngImages.'], ngImages : ['.$ngImages.'],
@ -518,6 +620,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
speed : "'.__("Speed", "wp-gpx-maps").'", speed : "'.__("Speed", "wp-gpx-maps").'",
grade : "'.__("Grade", "wp-gpx-maps").'", grade : "'.__("Grade", "wp-gpx-maps").'",
heartRate : "'.__("Heart rate", "wp-gpx-maps").'", heartRate : "'.__("Heart rate", "wp-gpx-maps").'",
atemp : "'.__("Temperature", "wp-gpx-maps").'",
cadence : "'.__("Cadence", "wp-gpx-maps").'", cadence : "'.__("Cadence", "wp-gpx-maps").'",
goFullScreen : "'.__("Go Full Screen", "wp-gpx-maps").'", goFullScreen : "'.__("Go Full Screen", "wp-gpx-maps").'",
exitFullFcreen : "'.__("Exit Full Screen", "wp-gpx-maps").'", exitFullFcreen : "'.__("Exit Full Screen", "wp-gpx-maps").'",
@ -526,7 +629,6 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
backToCenter : "'.__("Back to center", "wp-gpx-maps").'" backToCenter : "'.__("Back to center", "wp-gpx-maps").'"
} }
}); });
});
</script>'; </script>';
// print summary // print summary
@ -686,7 +788,9 @@ function WP_GPX_Maps_install() {
add_option("wpgpxmaps_map_waypoint_icon", '', '', 'yes'); add_option("wpgpxmaps_map_waypoint_icon", '', '', 'yes');
add_option("wpgpxmaps_map_nggallery", '', '', 'yes'); add_option("wpgpxmaps_map_nggallery", '', '', 'yes');
add_option("wpgpxmaps_show_hr", '', '', 'yes'); add_option("wpgpxmaps_show_hr", '', '', 'yes');
add_option("wpgpxmaps_show_atemp", '', '', 'yes');
add_option("wpgpxmaps_graph_line_color_hr", '#ff77bd', '', 'yes'); add_option("wpgpxmaps_graph_line_color_hr", '#ff77bd', '', 'yes');
add_option("wpgpxmaps_graph_line_color_atemp", '#ff77bd', '', 'yes');
add_option('wpgpxmaps_show_cadence','','','yes'); add_option('wpgpxmaps_show_cadence','','','yes');
add_option('wpgpxmaps_zoomonscrollwheel','','','yes'); add_option('wpgpxmaps_zoomonscrollwheel','','','yes');
add_option('wpgpxmaps_download','','','yes'); add_option('wpgpxmaps_download','','','yes');
@ -718,7 +822,9 @@ function WP_GPX_Maps_remove() {
delete_option('wpgpxmaps_map_waypoint_icon'); delete_option('wpgpxmaps_map_waypoint_icon');
delete_option('wpgpxmaps_map_nggallery'); delete_option('wpgpxmaps_map_nggallery');
delete_option('wpgpxmaps_show_hr'); delete_option('wpgpxmaps_show_hr');
delete_option('wpgpxmaps_show_atemp');
delete_option('wpgpxmaps_graph_line_color_hr'); delete_option('wpgpxmaps_graph_line_color_hr');
delete_option('wpgpxmaps_graph_line_color_atemp');
delete_option('wpgpxmaps_show_cadence'); delete_option('wpgpxmaps_show_cadence');
delete_option('wpgpxmaps_graph_line_color_cad'); delete_option('wpgpxmaps_graph_line_color_cad');
delete_option('wpgpxmaps_zoomonscrollwheel'); delete_option('wpgpxmaps_zoomonscrollwheel');

View File

@ -18,6 +18,8 @@
$showEle = get_option("wpgpxmaps_show_elevation"); $showEle = get_option("wpgpxmaps_show_elevation");
$showSpeed = get_option('wpgpxmaps_show_speed'); $showSpeed = get_option('wpgpxmaps_show_speed');
$showHr = get_option('wpgpxmaps_show_hr'); $showHr = get_option('wpgpxmaps_show_hr');
$showAtemp = get_option('wpgpxmaps_show_atemp');
$showCad = get_option('wpgpxmaps_show_cadence'); $showCad = get_option('wpgpxmaps_show_cadence');
$showGrade = get_option('wpgpxmaps_show_grade'); $showGrade = get_option('wpgpxmaps_show_grade');
$zoomonscrollwheel = get_option("wpgpxmaps_zoomonscrollwheel"); $zoomonscrollwheel = get_option("wpgpxmaps_zoomonscrollwheel");
@ -33,6 +35,8 @@
$avg_speed = get_option("wpgpxmaps_summary_avg_speed"); $avg_speed = get_option("wpgpxmaps_summary_avg_speed");
$total_time = get_option("wpgpxmaps_summary_total_time"); $total_time = get_option("wpgpxmaps_summary_total_time");
$usegpsposition = get_option("wpgpxmaps_usegpsposition");
$distanceType = get_option("wpgpxmaps_distance_type"); $distanceType = get_option("wpgpxmaps_distance_type");
if (empty($showEle)) if (empty($showEle))
@ -93,11 +97,18 @@
<input name="wpgpxmaps_download" type="checkbox" value="true" <?php if($download == true){echo('checked');} ?> onchange="this.value = (this.checked)" /> <i>Allow users to download your GPX file</i> <input name="wpgpxmaps_download" type="checkbox" value="true" <?php if($download == true){echo('checked');} ?> onchange="this.value = (this.checked)" /> <i>Allow users to download your GPX file</i>
</td> </td>
</tr> </tr>
<tr>
<th scope="row">Use browser GPS position:</th>
<td>
<input name="wpgpxmaps_usegpsposition" type="checkbox" value="true" <?php if($usegpsposition == true){echo('checked');} ?> onchange="this.value = (this.checked)" /> <i>Allow users to use browser GPS in order to display their current position on map</i>
</td>
</tr>
</table> </table>
<p class="submit"> <p class="submit">
<input type="hidden" name="action" value="update" /> <input type="hidden" name="action" value="update" />
<input name="page_options" type="hidden" value="wpgpxmaps_height,wpgpxmaps_graph_height,wpgpxmaps_width,wpgpxmaps_download,wpgpxmaps_skipcache,wpgpxmaps_distance_type" /> <input name="page_options" type="hidden" value="wpgpxmaps_height,wpgpxmaps_graph_height,wpgpxmaps_width,wpgpxmaps_download,wpgpxmaps_skipcache,wpgpxmaps_distance_type,wpgpxmaps_usegpsposition" />
<input type="submit" class="button-primary" value="<?php _e('Save Changes', "wp_gpx_maps") ?>" /> <input type="submit" class="button-primary" value="<?php _e('Save Changes', "wp_gpx_maps") ?>" />
</p> </p>
@ -235,6 +246,13 @@
</td> </td>
</tr> </tr>
<tr>
<th scope="row">Current GPS Position Icon:</th>
<td>
<input name="wpgpxmaps_currentpositioncon" value="<?php echo get_option('wpgpxmaps_currentpositioncon'); ?>" style="width:400px" /> <em>(Url to image) Leave empty for default</em>
</td>
</tr>
<tr> <tr>
<th scope="row">Custom Waypoint Icon:</th> <th scope="row">Custom Waypoint Icon:</th>
<td> <td>
@ -246,7 +264,7 @@
<p class="submit"> <p class="submit">
<input type="hidden" name="action" value="update" /> <input type="hidden" name="action" value="update" />
<input name="page_options" type="hidden" value="wpgpxmaps_show_waypoint,wpgpxmaps_map_line_color,wpgpxmaps_map_type,wpgpxmaps_map_start_icon,wpgpxmaps_map_end_icon,wpgpxmaps_map_current_icon,wpgpxmaps_zoomonscrollwheel,wpgpxmaps_map_waypoint_icon" /> <input name="page_options" type="hidden" value="wpgpxmaps_show_waypoint,wpgpxmaps_map_line_color,wpgpxmaps_map_type,wpgpxmaps_map_start_icon,wpgpxmaps_map_end_icon,wpgpxmaps_map_current_icon,wpgpxmaps_zoomonscrollwheel,wpgpxmaps_map_waypoint_icon,wpgpxmaps_currentpositioncon" />
<input type="submit" class="button-primary" value="<?php _e('Save Changes', "wp_gpx_maps") ?>" /> <input type="submit" class="button-primary" value="<?php _e('Save Changes', "wp_gpx_maps") ?>" />
</p> </p>
@ -259,6 +277,13 @@
<h3 class="title">Chart</h3> <h3 class="title">Chart</h3>
<table class="form-table"> <table class="form-table">
<tr>
<th scope="row">Show altitude:</th>
<td>
<input type="checkbox" <?php if($showEle == "true"){echo('checked');} ?> onchange="wpgpxmaps_show_elevation.value = this.checked" onload="wpgpxmaps_show_elevation.value = this.checked" /> <i>Show Altitude</i>
<input name="wpgpxmaps_show_elevation" type="hidden" value="<?php echo $showEle; ?>">
</td>
</tr>
<tr> <tr>
<tr> <tr>
<th scope="row">Altitude line color:</th> <th scope="row">Altitude line color:</th>
@ -287,14 +312,6 @@
<em>(leave empty for auto scale)</em> <em>(leave empty for auto scale)</em>
</td> </td>
</tr> </tr>
<tr>
<th scope="row">Show elevation:</th>
<td>
<input type="checkbox" <?php if($showEle == "true"){echo('checked');} ?> onchange="wpgpxmaps_show_elevation.value = this.checked" onload="wpgpxmaps_show_elevation.value = this.checked" /> <i>Show elevation</i>
<input name="wpgpxmaps_show_elevation" type="hidden" value="<?php echo $showEle; ?>">
</td>
</tr>
<tr> <tr>
<th scope="row">Show speed:</th> <th scope="row">Show speed:</th>
<td> <td>
@ -342,6 +359,21 @@
<input name="wpgpxmaps_graph_line_color_hr" type="color" data-hex="true" value="<?php echo get_option('wpgpxmaps_graph_line_color_hr'); ?>" /> <input name="wpgpxmaps_graph_line_color_hr" type="color" data-hex="true" value="<?php echo get_option('wpgpxmaps_graph_line_color_hr'); ?>" />
</td> </td>
</tr> </tr>
<tr>
<th scope="row">Show Temperature (where aviable):</th>
<td>
<input name="wpgpxmaps_show_atemp" type="checkbox" value="true" <?php if($showAtemp == true){echo('checked');} ?> onchange="this.value = (this.checked)" /> <i>Show Temperature</i>
</td>
</tr>
<tr>
<th scope="row">Temperature line color:</th>
<td>
<input name="wpgpxmaps_graph_line_color_atemp" type="color" data-hex="true" value="<?php echo get_option('wpgpxmaps_graph_line_color_atemp'); ?>" />
</td>
</tr>
<tr> <tr>
<th scope="row">Show Cadence (where aviable):</th> <th scope="row">Show Cadence (where aviable):</th>
<td> <td>
@ -375,7 +407,7 @@
<p class="submit"> <p class="submit">
<input type="hidden" name="action" value="update" /> <input type="hidden" name="action" value="update" />
<input name="page_options" type="hidden" value="wpgpxmaps_unit_of_measure,wpgpxmaps_graph_line_color,wpgpxmaps_show_elevation,wpgpxmaps_show_speed,wpgpxmaps_graph_line_color_speed,wpgpxmaps_show_hr,wpgpxmaps_graph_line_color_hr,wpgpxmaps_unit_of_measure_speed,wpgpxmaps_graph_offset_from1,wpgpxmaps_graph_offset_to1,wpgpxmaps_graph_offset_from2,wpgpxmaps_graph_offset_to2,wpgpxmaps_graph_line_color_cad,wpgpxmaps_show_cadence,wpgpxmaps_show_grade,wpgpxmaps_graph_line_color_grade" /> <input name="page_options" type="hidden" value="wpgpxmaps_unit_of_measure,wpgpxmaps_graph_line_color,wpgpxmaps_show_elevation,wpgpxmaps_show_speed,wpgpxmaps_graph_line_color_speed,wpgpxmaps_show_hr,wpgpxmaps_graph_line_color_hr,wpgpxmaps_unit_of_measure_speed,wpgpxmaps_graph_offset_from1,wpgpxmaps_graph_offset_to1,wpgpxmaps_graph_offset_from2,wpgpxmaps_graph_offset_to2,wpgpxmaps_graph_line_color_cad,wpgpxmaps_show_cadence,wpgpxmaps_show_grade,wpgpxmaps_graph_line_color_grade,wpgpxmaps_show_atemp,wpgpxmaps_graph_line_color_atemp" />
<input type="submit" class="button-primary" value="<?php _e('Save Changes', "wp_gpx_maps") ?>" /> <input type="submit" class="button-primary" value="<?php _e('Save Changes', "wp_gpx_maps") ?>" />
</p> </p>

View File

@ -117,6 +117,7 @@
unset($points->dist[$i]); unset($points->dist[$i]);
unset($points->speed[$i]); unset($points->speed[$i]);
unset($points->hr[$i]); unset($points->hr[$i]);
unset($points->atemp[$i]);
unset($points->cad[$i]); unset($points->cad[$i]);
unset($points->grade[$i]); unset($points->grade[$i]);
} }
@ -137,6 +138,7 @@
$points->dist = array(); $points->dist = array();
$points->speed = array(); $points->speed = array();
$points->hr = array(); $points->hr = array();
$points->atemp = array();
$points->cad = array(); $points->cad = array();
$points->grade = array(); $points->grade = array();
@ -195,6 +197,7 @@
$time = $trkpt->time; $time = $trkpt->time;
$speed = (float)$trkpt->speed; $speed = (float)$trkpt->speed;
$hr = 0; $hr = 0;
$atemp = 0;
$cad = 0; $cad = 0;
$grade = 0; $grade = 0;
@ -211,6 +214,14 @@
} }
} }
$_atemp = @$trkpt->xpath('extensions/gpxtpx:TrackPointExtension/gpxtpx:atemp/text() | extensions/TrackPointExtension/atemp/text()');
if ($_atemp)
{
foreach ($_atemp as $node) {
$atemp = (float)$node;
}
}
$_cad = @$trkpt->xpath('extensions/gpxtpx:TrackPointExtension/gpxtpx:cad/text() | extensions/TrackPointExtension/cad/text()'); $_cad = @$trkpt->xpath('extensions/gpxtpx:TrackPointExtension/gpxtpx:cad/text() | extensions/TrackPointExtension/cad/text()');
if ($_cad) if ($_cad)
{ {
@ -231,6 +242,7 @@
array_push($points->dist, (float)round($dist,2)); array_push($points->dist, (float)round($dist,2));
array_push($points->speed, 0); array_push($points->speed, 0);
array_push($points->hr, $hr); array_push($points->hr, $hr);
array_push($points->atemp, $atemp);
array_push($points->cad, $cad); array_push($points->cad, $cad);
array_push($points->grade, $grade); array_push($points->grade, $grade);
@ -298,6 +310,9 @@
array_push($points->dist, (float)round($dist, 2) ); array_push($points->dist, (float)round($dist, 2) );
array_push($points->speed, (float)round($avgSpeed, 1) ); array_push($points->speed, (float)round($avgSpeed, 1) );
array_push($points->hr, $hr); array_push($points->hr, $hr);
array_push($points->atemp, $atemp);
array_push($points->cad, $cad); array_push($points->cad, $cad);
array_push($points->grade, (float)round($grade, 2) ); array_push($points->grade, (float)round($grade, 2) );
@ -322,6 +337,7 @@
array_push($points->dist, null); array_push($points->dist, null);
array_push($points->speed, null); array_push($points->speed, null);
array_push($points->hr, null); array_push($points->hr, null);
array_push($points->atemp, null);
array_push($points->cad, null); array_push($points->cad, null);
array_push($points->grade, null); array_push($points->grade, null);
@ -340,6 +356,7 @@
array_pop($points->dist, null); array_pop($points->dist, null);
array_pop($points->speed, null); array_pop($points->speed, null);
array_pop($points->hr, null); array_pop($points->hr, null);
array_pop($points->atemp, null);
array_pop($points->cad, null); array_pop($points->cad, null);
array_pop($points->grade, null); array_pop($points->grade, null);
@ -389,6 +406,7 @@
array_push($points->dist, 0 ); array_push($points->dist, 0 );
array_push($points->speed, 0 ); array_push($points->speed, 0 );
array_push($points->hr, 0 ); array_push($points->hr, 0 );
array_push($points->atemp, 0 );
array_push($points->cad, 0 ); array_push($points->cad, 0 );
array_push($points->grade, 0 ); array_push($points->grade, 0 );
$lastLat=$lat; $lastLat=$lat;
@ -409,6 +427,7 @@
array_push($points->dist, 0 ); array_push($points->dist, 0 );
array_push($points->speed, 0 ); array_push($points->speed, 0 );
array_push($points->hr, 0 ); array_push($points->hr, 0 );
array_push($points->atemp, 0 );
array_push($points->cad, 0 ); array_push($points->cad, 0 );
array_push($points->grade, 0 ); array_push($points->grade, 0 );
} }
@ -454,6 +473,7 @@
array_push($points->dist, 0 ); array_push($points->dist, 0 );
array_push($points->speed, 0 ); array_push($points->speed, 0 );
array_push($points->hr, 0 ); array_push($points->hr, 0 );
array_push($points->atemp, 0 );
array_push($points->cad, 0 ); array_push($points->cad, 0 );
array_push($points->grade, 0 ); array_push($points->grade, 0 );
$lastLat=$lat; $lastLat=$lat;
@ -474,6 +494,7 @@
array_push($points->dist, 0 ); array_push($points->dist, 0 );
array_push($points->speed, 0 ); array_push($points->speed, 0 );
array_push($points->hr, 0 ); array_push($points->hr, 0 );
array_push($points->atemp, 0 );
array_push($points->cad, 0 ); array_push($points->cad, 0 );
array_push($points->grade, 0 ); array_push($points->grade, 0 );
} }