This commit is contained in:
bastianonm 2012-04-12 14:49:22 +00:00
parent 01a41563ef
commit 04d99ebd50
10 changed files with 197 additions and 70 deletions

View File

@ -4,37 +4,71 @@
*/
var t;
var funqueue = [];
var infowindow;
var mapLoading = false;
var CustomMarker;
function CustomMarker( map, latlng, src, img_w, img_h) {
this.latlng_ = latlng;
var wrapFunction = function(fn, context, params) {
return function() {
fn.apply(context, params);
};
}
// Once the LatLng and text are set, add the overlay to the map. This will
// trigger a call to panes_changed which should in turn call draw.
this.setMap(map);
this.src_ = src;
this.img_w_ = img_w;
this.img_h_ = img_h;
}
function wpgpxmaps(params)
{
funqueue.push( wrapFunction(_wpgpxmaps, this, [params]));
unqueue();
}
CustomMarker.prototype = new google.maps.OverlayView();
function unqueue()
{
if ((google == undefined || google.maps == undefined || Highcharts == undefined))
{
t = setTimeout("unqueue()",200);
}
else
{
setup();
while (funqueue.length > 0) {
(funqueue.shift())();
}
}
}
CustomMarker.prototype.draw = function() {
var me = this;
function setup()
{
// Check if the el has been created.
var el = this.img_;
if (!el) {
CustomMarker = function( map, latlng, src, img_w, img_h) {
this.latlng_ = latlng;
el = this.img_ = document.createElement('img');
// Once the LatLng and text are set, add the overlay to the map. This will
// trigger a call to panes_changed which should in turn call draw.
this.setMap(map);
this.src_ = src;
this.img_w_ = img_w;
this.img_h_ = img_h;
}
CustomMarker.prototype = new google.maps.OverlayView();
CustomMarker.prototype.draw = function() {
var me = this;
// Check if the el has been created.
var el = this.img_;
if (!el) {
el = this.img_ = document.createElement('img');
el.style.cssText = "border:1px solid #fff;position:absolute;cursor:pointer;margin:0;width:"+(this.img_w_/3)+"px;height:"+(this.img_h_/3)+"px;z-index:1;";
el.setAttribute("lat",this.latlng_.lat());
el.setAttribute("lon",this.latlng_.lng());
el.src=this.src_;
google.maps.event.addDomListener(el, "click", function(event) {
google.maps.event.trigger(me, "click",el);
});
google.maps.event.addDomListener(el, "click", function(event) {
google.maps.event.trigger(me, "click",el);
});
google.maps.event.addDomListener(el, "mouseover", function(event) {
var _t = el.style.top.replace('px','');
@ -58,30 +92,34 @@ var infowindow;
}, 100);
});
// Then add the overlay to the DOM
var panes = this.getPanes();
panes.overlayImage.appendChild(el);
}
// Then add the overlay to the DOM
var panes = this.getPanes();
panes.overlayImage.appendChild(el);
}
// Position the overlay
var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
if (point) {
el.style.left = point.x + 'px';
el.style.top = point.y + 'px';
// Position the overlay
var point = this.getProjection().fromLatLngToDivPixel(this.latlng_);
if (point) {
el.style.left = point.x + 'px';
el.style.top = point.y + 'px';
this.orig_left = point.x;
this.orig_top = point.y;
}
};
}
};
CustomMarker.prototype.remove = function() {
// Check if the overlay was on the map and needs to be removed.
if (this.img_) {
this.img_.parentNode.removeChild(this.img_);
this.img_ = null;
}
};
CustomMarker.prototype.remove = function() {
// Check if the overlay was on the map and needs to be removed.
if (this.img_) {
this.img_.parentNode.removeChild(this.img_);
this.img_ = null;
}
};
function wpgpxmaps(params)
}
function _wpgpxmaps(params)
{
var targetId = params.targetId;
@ -91,6 +129,7 @@ function wpgpxmaps(params)
var graphEle = params.graphEle;
var graphSpeed = params.graphSpeed;
var graphHr = params.graphHr;
var graphCad = params.graphCad;
var waypoints = params.waypoints;
var unit = params.unit;
var unitspeed = params.unitspeed;
@ -98,6 +137,7 @@ function wpgpxmaps(params)
var color2 = params.color2;
var color3 = params.color3;
var color4 = params.color4;
var color5 = params.color5;
var chartFrom1 = params.chartFrom1;
var chartTo1 = params.chartTo1;
var chartFrom2 = params.chartFrom2;
@ -569,10 +609,49 @@ function wpgpxmaps(params)
l_y_arr.push(l_hr);
}
if (graphCad != '')
{
var l_cad = { suf : "", dec : 0 };
var cadData = [];
for (i=0; i<valLen; i++)
{
cadData.push([graphDist[i],graphCad[i]]);
}
var yaxe = {
title: { text: null },
labels: {
//align: 'right',
formatter: function() {
return Highcharts.numberFormat(this.value, l_cad.dec) + l_cad.suf;
}
},
opposite: true
}
hoptions.yAxis.push(yaxe);
hoptions.series.push({
name: 'Cadence',
lineWidth: 1,
marker: { radius: 0 },
data : cadData,
color: color5,
yAxis: hoptions.series.length
});
l_y_arr.push(l_cad);
}
var hchart = new Highcharts.Chart(hoptions);
}
else {
jQuery("#hchart_" + params.targetId).css("display","none");
}
}

View File

@ -1,10 +1,10 @@
=== WP GPX Maps ===
Contributors: bastianonm
Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=8VHWLRW6JBTML
Tags: maps, gpx, gps, graph, chart, google maps, highcharts, track, garmin, image, nextgen-gallery, nextgen, exif, OpenStreetMap, OpenCycleMap, Hike&Bike, heart rate, heartrate
Tags: maps, gpx, gps, graph, chart, google maps, highcharts, track, garmin, image, nextgen-gallery, nextgen, exif, OpenStreetMap, OpenCycleMap, Hike&Bike, heart rate, heartrate, cadence
Requires at least: 2.0.0
Tested up to: 3.3
Stable tag: 1.1.15
Stable tag: 1.1.16
License: GPLv2 or later
Draws a gpx track with altitude graph
@ -77,9 +77,13 @@ The attributes are:
1. showhr: show heart rate inside the chart (default is FALSE)
1. showcad: show cadence inside the chart (default is FALSE)
1. glinecolorspeed: speed line color (default is #ff0000)
1. glinecolorhr: heart rate line color (default is #ff77bd)
1. glinecolorhr: heart rate line color (default is #ff77bd)
1. glinecolorcad: cadence line color (default is #beecff)
1. uomspeed: the unit of measure of speed are: 0, 1, 2 (0 = m/s, 1 = km/h, 2 = miles/h)
@ -115,8 +119,13 @@ Yes!
1. Gpx with waypoints
2. Admin area - List of tracks
2. Admin area - Settings
2. Altitude & Speed
2. Altitude & Speed & Hearth rate
== Changelog ==
= 1.1.16 =
* Cadence chart (where available)
* minor bug fixes
= 1.1.15 =
* migration from google chart to highcharts. Highcharts are much better than google chart! This is the base for a new serie of improvements. Stay in touch for the next releases!
* heart rate chart (where available)
@ -189,6 +198,7 @@ Yes!
* Initial release
== Upgrade Notice ==
= 1.1.16 =
= 1.1.15 =
= 1.1.14 =
= 1.1.13 =

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 78 KiB

BIN
screenshot-5.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

BIN
screenshot-6.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

View File

@ -3,7 +3,7 @@
Plugin Name: WP-GPX-Maps
Plugin URI: http://www.darwinner.it/
Description: Draws a gpx track with altitude graph
Version: 1.1.15
Version: 1.1.16
Author: Bastianon Massimo
Author URI: http://www.pedemontanadelgrappa.it/
License: GPL
@ -19,10 +19,8 @@ add_shortcode('sgpx','handle_WP_GPX_Maps_Shortcodes');
register_activation_hook(__FILE__,'WP_GPX_Maps_install');
register_deactivation_hook( __FILE__, 'WP_GPX_Maps_remove');
add_filter('plugin_action_links', 'WP_GPX_Maps_action_links', 10, 2);
add_action('wp_enqueue_scripts', 'enqueue_WP_GPX_Maps_scripts');
function WP_GPX_Maps_action_links($links, $file) {
static $this_plugin;
@ -60,7 +58,8 @@ function print_WP_GPX_Maps_scripts()
</script>
<style type="text/css">
.wpgpxmaps { clear:both; }
.wpgpxmaps img{ width: auto; max-width: auto; }
.entry-content .wpgpxmaps img,
.wpgpxmaps img { max-width: none; width: none; }
.wpgpxmaps .ngimages { display:none; }
</style>
<?php
@ -92,6 +91,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$mh = findValue($attr, "mheight", "wpgpxmaps_height", "450px");
$mt = findValue($attr, "mtype", "wpgpxmaps_map_type", "HYBRID");
$gh = findValue($attr, "gheight", "wpgpxmaps_graph_height", "200px");
$showCad = findValue($attr, "showcad", "wpgpxmaps_show_cadence", false);
$showHr = findValue($attr, "showhr", "wpgpxmaps_show_hr", false);
$showW = findValue($attr, "waypoints", "wpgpxmaps_show_waypoint", false);
$showSpeed = findValue($attr, "showspeed", "wpgpxmaps_show_speed", false);
@ -103,6 +103,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$color_graph = findValue($attr, "glinecolor", "wpgpxmaps_graph_line_color", "#3366cc");
$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_cad = findValue($attr, "glinecolorcad", "wpgpxmaps_graph_line_color_cad", "#beecff");
$chartFrom1 = findValue($attr, "chartfrom1", "wpgpxmaps_graph_offset_from1", "");
$chartTo1 = findValue($attr, "chartfo1", "wpgpxmaps_graph_offset_to1", "");
$chartFrom2 = findValue($attr, "chartfrom2", "wpgpxmaps_graph_offset_from2", "");
@ -115,16 +116,14 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$r = rand(1,5000000);
$cacheFileName = "$gpx,$w,$mh,$mt,$gh,$showW,showHr,$donotreducegpx,$pointsoffset,$showSpeed,$uom,v1.1.15";
$cacheFileName = "$gpx,$w,$mh,$mt,$gh,$showW,$showHr,$showCad,$donotreducegpx,$pointsoffset,$showSpeed,$uom,v1.1.16";
$cacheFileName = md5($cacheFileName);
$gpxcache = gpxCacheFolderPath();
if(!(file_exists($gpxcache) && is_dir($gpxcache)))
{
@mkdir($gpxcache,0755,true);
}
$gpxcache.= DIRECTORY_SEPARATOR.$cacheFileName.".tmp";
@ -138,7 +137,8 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_dist = $cache_obj["points_graph_dist"];
$points_graph_ele = $cache_obj["points_graph_ele"];
$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_cad = $cache_obj["points_graph_cad"];
$waypoints = $cache_obj["waypoints"];
} catch (Exception $e) {
$points_maps= '';
@ -146,6 +146,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = '';
$points_graph_speed = '';
$points_graph_hr = '';
$points_graph_cad = '';
$waypoints= '';
}
}
@ -179,6 +180,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = '';
$points_graph_speed = '';
$points_graph_hr = '';
$points_graph_cad = '';
$waypoints = '';
foreach(array_keys($points->lat) as $i)
@ -224,6 +226,11 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_hr .= $points->hr[$i].',';
}
if ($showCad == true)
{
$points_graph_cad .= $points->cad[$i].',';
}
}
if ($showW == true)
@ -241,6 +248,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
$points_graph_ele = preg_replace($p, "", $points_graph_ele);
$points_graph_speed = preg_replace($p, "", $points_graph_speed);
$points_graph_hr = preg_replace($p, "", $points_graph_hr);
$points_graph_cad = preg_replace($p, "", $points_graph_cad);
$waypoints = preg_replace($p, "", $waypoints);
@ -255,6 +263,9 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
if (preg_match("/^(0,?)+$/", $points_graph_hr))
$points_graph_hr = "";
if (preg_match("/^(0,?)+$/", $points_graph_cad))
$points_graph_cad = "";
}
@ -279,6 +290,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_cad" => $points_graph_cad,
"waypoints" => $waypoints)
),
LOCK_EX);
@ -292,7 +304,6 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
<div id="ngimages_'.$r.'" class="ngimages" style="display:none">'.$ngimgs_data.'</div>
</div>
<script type="text/javascript">
jQuery(document).ready(function() {
wpgpxmaps({ targetId : "'.$r.'",
mapType : "'.$mt.'",
@ -301,6 +312,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
graphEle : ['.$points_graph_ele.'],
graphSpeed : ['.$points_graph_speed.'],
graphHr : ['.$points_graph_hr.'],
graphCad : ['.$points_graph_cad.'],
waypoints : ['.$waypoints.'],
unit : "'.$uom.'",
unitspeed : "'.$uomspeed.'",
@ -308,6 +320,7 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
color2 : "'.$color_graph.'",
color3 : "'.$color_graph_speed.'",
color4 : "'.$color_graph_hr.'",
color5 : "'.$color_graph_cad.'",
chartFrom1 : "'.$chartFrom1.'",
chartTo1 : "'.$chartTo1.'",
chartFrom2 : "'.$chartFrom2.'",
@ -317,7 +330,6 @@ function handle_WP_GPX_Maps_Shortcodes($attr, $content='')
currentIcon : "'.$currentIcon.'"
});
});
</script>';
return $output;
@ -367,6 +379,7 @@ function WP_GPX_Maps_install() {
add_option("wpgpxmaps_graph_line_color", '#3366cc', '', 'yes');
add_option("wpgpxmaps_graph_line_color_speed", '#ff0000', '', 'yes');
add_option("wpgpxmaps_map_line_color", '#3366cc', '', 'yes');
add_option("wpgpxmaps_graph_line_color_cad", '#beecff', '', 'yes');
add_option("wpgpxmaps_graph_offset_from1", '', '', 'yes');
add_option("wpgpxmaps_graph_offset_to1", '', '', 'yes');
add_option("wpgpxmaps_graph_offset_from2", '', '', 'yes');
@ -377,6 +390,7 @@ function WP_GPX_Maps_install() {
add_option("wpgpxmaps_map_nggallery", '', '', 'yes');
add_option("wpgpxmaps_show_hr", '', '', 'yes');
add_option("wpgpxmaps_graph_line_color_hr", '#ff77bd', '', 'yes');
add_option('wpgpxmaps_show_cadence','','','yes');
}
@ -404,6 +418,8 @@ function WP_GPX_Maps_remove() {
delete_option('wpgpxmaps_map_nggallery');
delete_option('wpgpxmaps_show_hr');
delete_option('wpgpxmaps_graph_line_color_hr');
delete_option('wpgpxmaps_show_cadence');
delete_option('wpgpxmaps_graph_line_color_cad');
}
?>

View File

@ -97,13 +97,15 @@ function WP_GPX_Maps_html_page() {
<li><b>waypoints</b>: print the gpx waypoints inside the map (default is FALSE)</li>
<li><b>donotreducegpx</b>: print all the point without reduce it (default is FALSE)</li>
<li><b>pointsoffset</b>: skip points closer than XX meters(default is 10)</li>
<li><b>uom</b>: the unit of measure values are: 0, 1 (0 = meters, 1 = miles/feet)</li>
<li><b>uom</b>: the unit of measure values are: 0, 1, 2 (0 = meters, 1 = miles/feet, 2 = meters/kilometers)</li>
<li><b>mlinecolor</b>: map line color (default is #3366cc)</li>
<li><b>glinecolor</b>: graph line color (default is #3366cc)</li>
<li><b>glinecolorhr</b>: heart rate line color (default is #ff77bd)</li>
<li><b>glinecolorspeed</b>: speed line color (default is #ff0000)</li>
<li><b>glinecolorhr</b>: heart rate line color (default is #ff77bd)</li>
<li><b>glinecolorcad</b>: cadence line color (default is #beecff)</li>
<li><b>showspeed</b>: show speed inside the chart (default is FALSE)</li>
<li><b>showhr</b>: show heart rate inside the chart (default is FALSE)</li>
<li><b>showcad</b>: show cadence inside the chart (default is FALSE)</li>
<li><b>uomspeed</b>: the unit of measure of speed are: 0, 1, 2 (0 = m/s, 1 = km/h, 2 = miles/h)</li>
<li><b>chartFrom1</b>: minimun value for altitude chart</li>
<li><b>chartTo1</b>: maxumin value for altitude chart</li>
@ -115,7 +117,7 @@ function WP_GPX_Maps_html_page() {
<li><b>nggalleries</b>: NextGen Gallery id or a list of Galleries id separated by a comma</li>
<li><b>ngimages</b>: NextGen Image id or a list of Images id separated by a comma</li>
</ul>
<p>
<a href="http://www.darwinner.it/forums/forum/wp-gpx-maps/">Bugs, problems, thanks and anything else here!</a>
</p>

View File

@ -11,6 +11,7 @@
$uomSpeed = get_option('wpgpxmaps_unit_of_measure_speed');
$showSpeed = get_option('wpgpxmaps_show_speed');
$showHr = get_option('wpgpxmaps_show_hr');
$showCad = get_option('wpgpxmaps_show_cadence');
if (!($t))
$t = 'HYBRID';
@ -182,13 +183,8 @@
<em>(leave empty for auto scale)</em>
</td>
</tr>
$showHr = get_option('wpgpxmaps_show_hr');
<tr>
<th scope="row">Show heart rate:</th>
<th scope="row">Show Heart Rate (where aviable):</th>
<td>
<input name="wpgpxmaps_show_hr" type="checkbox" value="true" <?php if($showHr == true){echo('checked');} ?> onchange="this.value = (this.checked)" /><i>Show heart rate</i>
</td>
@ -201,14 +197,24 @@
</tr>
<tr>
<th scope="row">Show Cadence (where aviable):</th>
<td>
<input name="wpgpxmaps_show_cadence" type="checkbox" value="true" <?php if($showCad == true){echo('checked');} ?> onchange="this.value = (this.checked)" /><i>Show Cadence</i>
</td>
</tr>
<tr>
<th scope="row">Cadence line color:</th>
<td>
<input name="wpgpxmaps_graph_line_color_cad" type="color" data-hex="true" value="<?php echo get_option('wpgpxmaps_graph_line_color_cad'); ?>" />
</td>
</tr>
</table>
<p class="submit">
<input type="hidden" name="action" value="update" />
<input name="page_options" type="hidden" value="wpgpxmaps_unit_of_measure,wpgpxmaps_graph_line_color,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" />
<input name="page_options" type="hidden" value="wpgpxmaps_unit_of_measure,wpgpxmaps_graph_line_color,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" />
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>

View File

@ -106,6 +106,7 @@
unset($points->dist[$i]);
unset($points->speed[$i]);
unset($points->hr[$i]);
unset($points->cad[$i]);
}
}
}
@ -123,6 +124,7 @@
$points->dist = array();
$points->speed = array();
$points->hr = array();
$points->cad = array();
$gpx = simplexml_load_file($filePath);
@ -155,17 +157,26 @@
$ele = $trkpt->ele;
$time = $trkpt->time;
$speed = (float)$trkpt->speed;
$hr=0;
$hr = 0;
$cad = 0;
if (isset($trkpt->extensions))
{
$_hr = @$trkpt->extensions->xpath('gpxtpx:TrackPointExtension/gpxtpx:hr/text()');
$_hr = $trkpt->extensions->xpath('gpxtpx:TrackPointExtension/gpxtpx:hr/text()');
if ($_hr)
{
foreach ($_hr as $node) {
$hr = (float)$node;
}
}
$_cad = $trkpt->extensions->xpath('gpxtpx:TrackPointExtension/gpxtpx:cad/text()');
if ($_cad)
{
foreach ($_cad as $node) {
$cad = (float)$node;
}
}
}
if ($lastLat == 0 && $lastLon == 0)
@ -178,6 +189,7 @@
array_push($points->dist, (float)round($dist,2));
array_push($points->speed, 0);
array_push($points->hr, $hr);
array_push($points->cad, $cad);
$lastLat=$lat;
$lastLon=$lon;
@ -193,8 +205,6 @@
if ($speed == 0)
{
$datediff = (float)my_date_diff($lastTime,$time);
//echo "------------$time-------$lastTime-----";
//echo "------------$datediff------------";
if ($datediff>0)
{
$speed = $offset / $datediff;
@ -206,7 +216,6 @@
if (((float) $offset + (float) $lastOffset) > $gpxOffset)
{
//Bigger Offset -> write coordinate
$avgSpeed = 0;
foreach($speedBuffer as $s)
@ -225,6 +234,7 @@
array_push($points->dist, (float)round($dist, 2) );
array_push($points->speed, (float)round($avgSpeed, 1) );
array_push($points->hr, $hr);
array_push($points->cad, $cad);
}
else
@ -269,6 +279,8 @@
array_push($points->ele, 0 );
array_push($points->dist, 0 );
array_push($points->speed, 0 );
array_push($points->hr, 0 );
array_push($points->cad, 0 );
$lastLat=$lat;
$lastLon=$lon;
}
@ -285,7 +297,9 @@
array_push($points->lon, (float)$lon );
array_push($points->ele, 0 );
array_push($points->dist, 0 );
array_push($points->speed, 0 );
array_push($points->speed, 0 );
array_push($points->hr, 0 );
array_push($points->cad, 0 );
}
else
{