Updated event_osm to v0.3.7 (#124)

* default path for *.gpx files

* path description fixed for many paths

* escape map parameter

* set default category id to "without"

* removed not needed "global $serendipity;"

* added README.md

* updated event_osm to v0.3.7

Co-authored-by: surrim <surrim@happyhydro.org>
This commit is contained in:
surrim 2021-05-28 19:12:35 +02:00 committed by GitHub
parent eff22e3f60
commit 8d8e6a1494
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 144 additions and 8 deletions

View file

@ -1,3 +1,12 @@
0.3.7:
---
* Added README.md
* Set default category id to "without"
* Escape map parameter
* Path description fixed for many paths
* Default path for *.gpx files
0.3.6:
---

View file

@ -0,0 +1,121 @@
# OpenStreetMap plugin for Serendipity
With this plugin you can implement one ore more interactive
maps for geo tagged entries and uploaded \*.gpx files.
The map is build by [OpenLayers][ol], a high-performance
JavaScript library.
## Setup
Some plugins are needed to make it work.
### serendipity_event_geo_json or Geo-JSON object
First you need a JSON object with all the geo information
for your maps. This can be simple done with the plugin
`serendipity_event_geo_json` or by hand as a JavaScript
global constant like below.
```javascript
const geo = {
"entries": [
{
"title": "I love Bochum",
"url": "/archives/12-I-love-Bochum.html",
"date": 1536588060,
"size": 211,
"author": "surrim",
"pos": [51.414369, 6.729898],
"categories": [42]
},
/* (more entries) */
],
"uploads": [
{
"title": "2021-06-30-essen-bochum.gpx",
"url": "/uploads/my-tour/2021-06-30-essen-bochum.gpx",
"date": 1610319360,
"size": 105144
},
/* (more uploads) */
]
};
```
### serendipity_event_static_osm
Next you need `serendipity_event_static_osm`.
It's needed to include all OpenLayers scripts and
stylesheets once. It can also remove all unnecessary things
from \*.gpx files like timestamps and metadata. This
behavior is enabled by default.
Enabling this is highly recommented to minimize traffic and
for uploading tracked data, for example from OsmAnd or
Garmin.
Geo data (including altitudes) will be untouched.
### serendipity_event_osm
This plugin can be used to include map instances. You can
set a default map position, zoomlevel, one or
more folders for the \*.gpx files and categories.
It inserts a div-element like below.
```html
<div
class="map"
data-category="42"
data-path="/uploads/my-tour/"
data-latitude="45.76697"
data-longitude="4.83519"
data-zoom="4"
style="height: 463px"
></div>
```
All the div-elements will be processed by the mentioned
static scripts later.
You can display the total distance of all \*.gpx files by
using a span-element like this.
```html
Total distance: <span class="distance-counter" data-category="42">(calculating...)</span> kilometers.
```
## How to use
Now you can enable the `serendipity_event_geotag` plugin to
enter coordinates of your entries. When you paste data like
"45.76697, 4.83519" it will be put into the latitude and
longitude fields. After saving the changes the entry will be
shown on the map.
Uploading \*.gpx files is even simpler. After uploading a
file you will find it on the map.
## Features
- Minimap
For faster position changes
- Fullscreen mode
To use all of the pixels of your monitor or smartphone
display
- Zoom
You can use the mouse wheel, double click, use the buttons
or two fingers on touchscreens to zoom
- Scale
Shown to make it easier to see distances
- Rainbow colors
The date of the entries and \*.gpx files is used to
calculate its color by the day of the month. For example
dates at the beginning or end of a month are red, dates in
the middle of a months are cyan
- Interaction
When you click on the map it will display a list of
entries to read and tracks to download. Extra information
like track length and date is shown as a tooltip
## Author
Martin Sewelies <ruhrtour@surrim.org>
[ol]: https://openlayers.org/

View file

@ -11,7 +11,7 @@
@define('PLUGIN_EVENT_OSM_CATEGORY_WITHOUT', 'Ohne');
@define('PLUGIN_EVENT_OSM_CATEGORY_ANY', 'Beliebig');
@define('PLUGIN_EVENT_OSM_PATH', 'Pfad');
@define('PLUGIN_EVENT_OSM_PATH_DESCRIPTION', 'Pfad für GPX-Dateien');
@define('PLUGIN_EVENT_OSM_PATH_DESCRIPTION', 'Pfad(e) für GPX-Dateien, getrennt durch Zeilenumbruch');
@define('PLUGIN_EVENT_OSM_LAT', 'Breitengrad (Lat.)');
@define('PLUGIN_EVENT_OSM_LAT_DESCRIPTION', 'Breitengrad für die Mitte der Karte');
@define('PLUGIN_EVENT_OSM_LONG', 'Längengrad (Lon.)');

View file

@ -11,7 +11,7 @@
@define('PLUGIN_EVENT_OSM_CATEGORY_WITHOUT', 'Ohne');
@define('PLUGIN_EVENT_OSM_CATEGORY_ANY', 'Beliebig');
@define('PLUGIN_EVENT_OSM_PATH', 'Pfad');
@define('PLUGIN_EVENT_OSM_PATH_DESCRIPTION', 'Pfad für GPX-Dateien');
@define('PLUGIN_EVENT_OSM_PATH_DESCRIPTION', 'Pfad(e) für GPX-Dateien, getrennt durch Zeilenumbruch');
@define('PLUGIN_EVENT_OSM_LAT', 'Breitengrad (Lat.)');
@define('PLUGIN_EVENT_OSM_LAT_DESCRIPTION', 'Breitengrad für die Mitte der Karte');
@define('PLUGIN_EVENT_OSM_LONG', 'Längengrad (Lon.)');

View file

@ -11,7 +11,7 @@
@define('PLUGIN_EVENT_OSM_CATEGORY_WITHOUT', 'Without');
@define('PLUGIN_EVENT_OSM_CATEGORY_ANY', 'Any');
@define('PLUGIN_EVENT_OSM_PATH', 'Path');
@define('PLUGIN_EVENT_OSM_PATH_DESCRIPTION', 'Path for GPX-files');
@define('PLUGIN_EVENT_OSM_PATH_DESCRIPTION', 'Path(s) for GPX-files, separated by linebreak');
@define('PLUGIN_EVENT_OSM_LAT', 'Latitude');
@define('PLUGIN_EVENT_OSM_LAT_DESCRIPTION', 'Latitude of the center of the map');
@define('PLUGIN_EVENT_OSM_LONG', 'Longitude');

View file

@ -1,4 +1,4 @@
<?php
@define('PLUGIN_EVENT_OSM_VERSION', '0.3.6');
@define('PLUGIN_EVENT_OSM_VERSION', '0.3.7');
@define('PLUGIN_EVENT_OSM_AUTHOR', 'Martin Sewelies');
?>

View file

@ -65,7 +65,13 @@
||
in_array($category_id, $page_categories)
) {
echo ' <div class="map" data-category="'.$category_id.'" data-path="'.$this->get_config('path', '').'" data-latitude="'.$this->get_config('latitude', 51.48165).'" data-longitude="'.$this->get_config('longitude', 7.21648).'" data-zoom="'.$this->get_config('zoom', 15).'" style="height: '.$this->get_config('height', '463px').'"></div>'.PHP_EOL;
echo ' <div class="map" data-category="' . $category_id
. '" data-path="' . addslashes($this->get_config('path', ''))
. '" data-latitude="' . ((float)$this->get_config('latitude', 51.48165))
. '" data-longitude="' . ((float)$this->get_config('longitude', 7.21648))
. '" data-zoom="' . ((int)$this->get_config('zoom', 15))
. '" style="height: ' . addslashes($this->get_config('height', '463px'))
. '"></div>'.PHP_EOL;
}
}
}
@ -85,6 +91,7 @@
function introspect_config_item($name, &$propbag)
{
global $serendipity;
switch($name) {
case 'title':
$propbag->add('type', 'string');
@ -97,13 +104,13 @@
$propbag->add('name', PLUGIN_EVENT_OSM_CATEGORY);
$propbag->add('description', PLUGIN_EVENT_OSM_CATEGORY_DESCRIPTION);
$propbag->add('select_values', $this->get_selectable_categories());
$propbag->add('default', 'all');
$propbag->add('default', 'without');
break;
case 'path':
$propbag->add('type', 'text');
$propbag->add('name', PLUGIN_EVENT_OSM_PATH);
$propbag->add('description', PLUGIN_EVENT_OSM_PATH_DESCRIPTION);
$propbag->add('default', '');
$propbag->add('default', $serendipity['serendipityHTTPPath'] . $serendipity['uploadPath']);
break;
case 'height':
$propbag->add('type', 'string');

View file

@ -37,7 +37,6 @@
function event_hook($event, &$bag, &$eventData, $addData = null)
{
global $serendipity;
if ($event === 'frontend_header') {
echo ' <link rel="stylesheet" href="'.$this->getFile('ressources/ol.css', 'serendipityHTTPPath').'" type="text/css" />'.PHP_EOL;
echo ' <link rel="stylesheet" href="'.$this->getFile('ressources/osm.css', 'serendipityHTTPPath').'" type="text/css" />'.PHP_EOL;