mirror of
https://github.com/Mibew/open-street-map-plugin.git
synced 2025-04-10 19:40:11 +03:00
Switch to OSM service
Rename the plugin and replace proprietary Google Maps service with Open Street Map
This commit is contained in:
parent
d6bdee1536
commit
c9a742ff83
51
Plugin.php
51
Plugin.php
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
* This file is a part of Mibew Google Maps Plugin.
|
* This file is a part of Mibew Open Street Map Plugin.
|
||||||
*
|
*
|
||||||
* Copyright 2014 Dmitriy Simushev <simushevds@gmail.com>.
|
* Copyright 2014-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -18,10 +18,10 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file The main file of Mibew:GoogleMaps plugin.
|
* @file The main file of Mibew:OpenStreetMap plugin.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
namespace Mibew\Mibew\Plugin\GoogleMaps;
|
namespace Mibew\Mibew\Plugin\OpenStreetMap;
|
||||||
|
|
||||||
use Mibew\Asset\AssetManagerInterface;
|
use Mibew\Asset\AssetManagerInterface;
|
||||||
use Mibew\EventDispatcher\EventDispatcher;
|
use Mibew\EventDispatcher\EventDispatcher;
|
||||||
@ -29,26 +29,18 @@ use Mibew\EventDispatcher\Events;
|
|||||||
use Mibew\Plugin\PluginManager;
|
use Mibew\Plugin\PluginManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides an ability to view visitors at Google Maps.
|
* Provides an ability to view visitors on Open Street Map.
|
||||||
*/
|
*/
|
||||||
class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\PluginInterface
|
class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\PluginInterface
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Class constructor.
|
* Class constructor.
|
||||||
*
|
*
|
||||||
* @param array $config List of the plugin config. The following options are
|
* @param array $config List of the plugin config.
|
||||||
* supported:
|
*
|
||||||
* - 'api_key': string, Google Maps API key that should be used to render
|
|
||||||
* maps.
|
|
||||||
*/
|
*/
|
||||||
public function __construct($config)
|
public function __construct($config)
|
||||||
{
|
{
|
||||||
if (empty($config['api_key'])) {
|
|
||||||
trigger_error('Google API key cannot be empty', E_USER_WARNING);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
parent::__construct($config);
|
|
||||||
|
|
||||||
$this->initialized = true;
|
$this->initialized = true;
|
||||||
}
|
}
|
||||||
@ -67,14 +59,14 @@ class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\Plugi
|
|||||||
/**
|
/**
|
||||||
* A handler for {@link \Mibew\EventDispatcher\Events::USERS_FUNCTION_CALL}.
|
* A handler for {@link \Mibew\EventDispatcher\Events::USERS_FUNCTION_CALL}.
|
||||||
*
|
*
|
||||||
* Provides an ability to use "googleMapsGetInfo" function at the client
|
* Provides an ability to use "openStreetMapGetInfo" function at the client
|
||||||
* side.
|
* side.
|
||||||
*
|
*
|
||||||
* @see \Mibew\EventDispatcher\Events::USERS_FUNCTION_CALL
|
* @see \Mibew\EventDispatcher\Events::USERS_FUNCTION_CALL
|
||||||
*/
|
*/
|
||||||
public function usersFunctionCallHandler(&$function)
|
public function usersFunctionCallHandler(&$function)
|
||||||
{
|
{
|
||||||
if ($function['function'] == 'googleMapsGetInfo') {
|
if ($function['function'] == 'openStreetMapGetInfo') {
|
||||||
// An IP string can contain more than one IP address. For example it
|
// An IP string can contain more than one IP address. For example it
|
||||||
// can be something like this: "x.x.x.x (x.x.x.x)". We need to
|
// can be something like this: "x.x.x.x (x.x.x.x)". We need to
|
||||||
// use only first one.
|
// use only first one.
|
||||||
@ -111,10 +103,7 @@ class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\Plugi
|
|||||||
{
|
{
|
||||||
if ($args['request']->attributes->get('_route') == 'users') {
|
if ($args['request']->attributes->get('_route') == 'users') {
|
||||||
$args['js'][] = $this->getFilesPath() . '/vendor/jquery-colorbox/jquery.colorbox-min.js';
|
$args['js'][] = $this->getFilesPath() . '/vendor/jquery-colorbox/jquery.colorbox-min.js';
|
||||||
$args['js'][] = array(
|
$args['js'][] = $this->getFilesPath() . '/vendor/leaflet/dist/leaflet.js';
|
||||||
'content' => $this->getApiUrl(),
|
|
||||||
'type' => AssetManagerInterface::ABSOLUTE_URL,
|
|
||||||
);
|
|
||||||
$args['js'][] = $this->getFilesPath() . '/js/plugin.js';
|
$args['js'][] = $this->getFilesPath() . '/js/plugin.js';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -128,6 +117,7 @@ class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\Plugi
|
|||||||
{
|
{
|
||||||
if ($args['request']->attributes->get('_route') == 'users') {
|
if ($args['request']->attributes->get('_route') == 'users') {
|
||||||
$args['css'][] = $this->getFilesPath() . '/vendor/jquery-colorbox/example3/colorbox.css';
|
$args['css'][] = $this->getFilesPath() . '/vendor/jquery-colorbox/example3/colorbox.css';
|
||||||
|
$args['css'][] = $this->getFilesPath() . '/vendor/leaflet/dist/leaflet.css';
|
||||||
$args['css'][] = $this->getFilesPath() . '/css/styles.css';
|
$args['css'][] = $this->getFilesPath() . '/css/styles.css';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -137,7 +127,7 @@ class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\Plugi
|
|||||||
*/
|
*/
|
||||||
public static function getVersion()
|
public static function getVersion()
|
||||||
{
|
{
|
||||||
return '1.1.0';
|
return '0.1.0';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -147,21 +137,4 @@ class Plugin extends \Mibew\Plugin\AbstractPlugin implements \Mibew\Plugin\Plugi
|
|||||||
{
|
{
|
||||||
return array('Mibew:GeoIp' => '1.*');
|
return array('Mibew:GeoIp' => '1.*');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Builds URL for Google Maps API.
|
|
||||||
*
|
|
||||||
* @return string API URL
|
|
||||||
* @throws \RuntimeException if API key was not set correctly.
|
|
||||||
*/
|
|
||||||
protected function getApiUrl()
|
|
||||||
{
|
|
||||||
if (empty($this->config['api_key'])) {
|
|
||||||
throw new \RuntimeException('Google API key cannot be empty');
|
|
||||||
}
|
|
||||||
|
|
||||||
return '//maps.googleapis.com/maps/api/js?key='
|
|
||||||
. $this->config['api_key']
|
|
||||||
. '&sensor=false';
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
26
README.md
26
README.md
@ -1,36 +1,22 @@
|
|||||||
# Google Maps plugin
|
# Open Street Map plugin
|
||||||
|
|
||||||
It shows your clients' location at Google maps!
|
Based upon the code of [Mibew Google Maps plugin](https://github.com/Mibew/google-maps-plugin).
|
||||||
|
|
||||||
|
Displays a visitor's location using Open Street Map service.
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
1. Get the archive with the plugin sources. You can download it from the [official site](https://mibew.org/plugins#mibew-google-maps) or build the plugin from sources.
|
1. Get the archive with the plugin sources. You can download it from the [official site](https://mibew.org/plugins#mibew-open-street-map) or build the plugin from sources.
|
||||||
|
|
||||||
2. Untar/unzip the plugin's archive.
|
2. Untar/unzip the plugin's archive.
|
||||||
|
|
||||||
3. Put files of the plugins to the `<Mibew root>/plugins` folder.
|
3. Put files of the plugins to the `<Mibew root>/plugins` folder.
|
||||||
|
|
||||||
4. Add plugins configs to "plugins" structure in "`<Mibew root>`/configs/config.yml". If the "plugins" stucture looks like `plugins: []` it will become:
|
4. Navigate to "`<Mibew Base URL>`/operator/plugin" page and enable the plugin.
|
||||||
```yaml
|
|
||||||
plugins:
|
|
||||||
"Mibew:GoogleMaps": # Plugin's configurations are described below
|
|
||||||
api_key: "secret API key provided by Google"
|
|
||||||
```
|
|
||||||
|
|
||||||
5. Navigate to "`<Mibew Base URL>`/operator/plugin" page and enable the plugin.
|
|
||||||
|
|
||||||
|
|
||||||
## Plugin's configurations
|
## Plugin's configurations
|
||||||
|
|
||||||
The plugin can be configured with values in "`<Mibew root>`/configs/config.yml" file.
|
This plugin does not require any configuration.
|
||||||
|
|
||||||
### config.api_key
|
|
||||||
|
|
||||||
Type: `String`
|
|
||||||
|
|
||||||
Google Maps API key that will be used to render maps. You can learn how to get the key [here](https://developers.google.com/maps/documentation/javascript/tutorial#api_key).
|
|
||||||
|
|
||||||
|
|
||||||
## Build from sources
|
## Build from sources
|
||||||
|
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
{
|
{
|
||||||
"name": "google-maps-plugin",
|
"name": "open-street-map-plugin",
|
||||||
"private": true,
|
"private": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"jquery-colorbox": "~1.5.14"
|
"jquery-colorbox": "~1.5.14",
|
||||||
|
"leaflet": "~1.3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* This file is a part of Mibew Google Maps Plugin.
|
* This file is a part of Mibew Open Street Map Plugin.
|
||||||
*
|
*
|
||||||
* Copyright 2014 Dmitriy Simushev <simushevds@gmail.com>.
|
* Copyright 2014-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
10
gulpfile.js
10
gulpfile.js
@ -23,9 +23,9 @@ gulp.task('prepare-release', ['bower'], function() {
|
|||||||
|
|
||||||
return eventStream.merge(
|
return eventStream.merge(
|
||||||
getSources()
|
getSources()
|
||||||
.pipe(zip('google-maps-plugin-' + version + '.zip')),
|
.pipe(zip('open-street-map-plugin-' + version + '.zip')),
|
||||||
getSources()
|
getSources()
|
||||||
.pipe(tar('google-maps-plugin-' + version + '.tar'))
|
.pipe(tar('open-street-map-plugin-' + version + '.tar'))
|
||||||
.pipe(gzip())
|
.pipe(gzip())
|
||||||
)
|
)
|
||||||
.pipe(chmod(0644))
|
.pipe(chmod(0644))
|
||||||
@ -51,11 +51,13 @@ var getSources = function() {
|
|||||||
'css/*',
|
'css/*',
|
||||||
'vendor/jquery-colorbox/README.md',
|
'vendor/jquery-colorbox/README.md',
|
||||||
'vendor/jquery-colorbox/jquery.colorbox-min.js',
|
'vendor/jquery-colorbox/jquery.colorbox-min.js',
|
||||||
'vendor/jquery-colorbox/example3/**/*'
|
'vendor/jquery-colorbox/example3/**/*',
|
||||||
|
'vendor/leaflet/dist/leaflet.*',
|
||||||
|
'vendor/leaflet/dist/images/*',
|
||||||
],
|
],
|
||||||
{base: './'}
|
{base: './'}
|
||||||
)
|
)
|
||||||
.pipe(rename(function(path) {
|
.pipe(rename(function(path) {
|
||||||
path.dirname = 'Mibew/Mibew/Plugin/GoogleMaps/' + path.dirname;
|
path.dirname = 'Mibew/Mibew/Plugin/OpenStreetMap/' + path.dirname;
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
30
js/plugin.js
30
js/plugin.js
@ -1,7 +1,7 @@
|
|||||||
/*!
|
/*!
|
||||||
* This file is a part of Mibew Google Maps Plugin.
|
* This file is a part of Mibew Open Street Map Plugin.
|
||||||
*
|
*
|
||||||
* Copyright 2014 Dmitriy Simushev <simushevds@gmail.com>.
|
* Copyright 2014-2018 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -16,7 +16,7 @@
|
|||||||
* limitations under the License.
|
* limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function (Mibew, $, google) {
|
(function (Mibew, $, L) {
|
||||||
/**
|
/**
|
||||||
* Display popup with a map and a marker on it.
|
* Display popup with a map and a marker on it.
|
||||||
*
|
*
|
||||||
@ -35,17 +35,15 @@
|
|||||||
$.colorbox({
|
$.colorbox({
|
||||||
html: $canvas,
|
html: $canvas,
|
||||||
onComplete: function() {
|
onComplete: function() {
|
||||||
var position = new google.maps.LatLng(latitude, longitude),
|
var map = L.map('map-canvas', {
|
||||||
map = new google.maps.Map($canvas.get(0), {
|
center: [latitude, longitude],
|
||||||
center: position,
|
zoom: 9
|
||||||
zoom: (city ? 8 : 6),
|
});
|
||||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
var osmUrl='https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png';
|
||||||
}),
|
var osmAttrib='Map data © <a href="https://openstreetmap.org">OpenStreetMap</a> contributors';
|
||||||
marker = new google.maps.Marker({
|
var osm = new L.TileLayer(osmUrl, {minZoom: 1, maxZoom: 19, attribution: osmAttrib});
|
||||||
map: map,
|
map.addLayer(osm);
|
||||||
position: position,
|
L.marker([latitude, longitude]).addTo(map).bindPopup('<strong>' + city + ', ' + country + '</strong>').openPopup();
|
||||||
title: city ? (city + ' (' + country + ')') : country
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -64,7 +62,7 @@
|
|||||||
if (ip) {
|
if (ip) {
|
||||||
server.callFunctions(
|
server.callFunctions(
|
||||||
[{
|
[{
|
||||||
'function': 'googleMapsGetInfo',
|
'function': 'openStreetMapGetInfo',
|
||||||
'arguments': {
|
'arguments': {
|
||||||
'agentId': agentId,
|
'agentId': agentId,
|
||||||
'ip': ip,
|
'ip': ip,
|
||||||
@ -126,4 +124,4 @@
|
|||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
})(Mibew, jQuery, google);
|
})(Mibew, jQuery, L);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"version": "1.1.0",
|
"version": "0.1.0",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"bower": "~1.3.12",
|
"bower": "~1.3.12",
|
||||||
"gulp": "~3.8.10",
|
"gulp": "~3.8.10",
|
||||||
|
Loading…
Reference in New Issue
Block a user