cluster markers works
+ they are personalizable + cluster icon grow without getting fat + js function for errors + scripts dont enqueue on all pages + php array of event function more light without coordinates - coordinates not yet retrieved by js
This commit is contained in:
@@ -2,6 +2,7 @@
|
|||||||
# MAP
|
# MAP
|
||||||
|
|
||||||
todo:
|
todo:
|
||||||
|
- redisgn + and - for zoom -> color and thickness
|
||||||
|
|
||||||
- [changed plugin directory in wp](https://wordpress.stackexchange.com/questions/120075/how-to-change-location-of-the-plugins-wordpress-themes-folder)
|
- [changed plugin directory in wp](https://wordpress.stackexchange.com/questions/120075/how-to-change-location-of-the-plugins-wordpress-themes-folder)
|
||||||
- googlemap api key : AIzaSyCvdGV2ssD4ov4a9CuIlQhoJyz5gWWiSvE
|
- googlemap api key : AIzaSyCvdGV2ssD4ov4a9CuIlQhoJyz5gWWiSvE
|
||||||
|
|||||||
@@ -26,37 +26,24 @@ require_once(dirname(__FILE__) . '/settings/mp_optionnals.php');
|
|||||||
* global variables :
|
* global variables :
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$mp_icon_url = '/wp-content/plugins/map_prof/images/' . $mp_icon_file;
|
$mp_icon_base_url = '/wp-content/plugins/map_prof/images/';
|
||||||
$mp_icon_size = [50, 50];
|
$mp_icon_url = $mp_icon_base_url . $mp_icon_file;
|
||||||
if (isset($mp_icon_size_setting)) {
|
$mp_icon_cluster_url = $mp_icon_base_url . $mp_icon_cluster_file;
|
||||||
if (is_array($mp_icon_size_setting)) {
|
|
||||||
if (count($mp_icon_size_setting) === 2) {
|
$mp_icon_size = [40, 40];
|
||||||
if ( is_numeric($mp_icon_size_setting[0]) && is_numeric($mp_icon_size_setting[1]) ) {
|
if (isset($mp_settings_icon_size)) {
|
||||||
$mp_icon_size = $mp_icon_size_setting;
|
if (is_array($mp_settings_icon_size)) {
|
||||||
|
if (count($mp_settings_icon_size) === 2) {
|
||||||
|
if ( is_numeric($mp_settings_icon_size[0]) && is_numeric($mp_settings_icon_size[1]) ) {
|
||||||
|
$mp_icon_size = $mp_settings_icon_size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//$mp_icon_label_color = "red";
|
|
||||||
|
|
||||||
|
$mp_icon_color = "#ba197a";
|
||||||
|
if (isset($mp_settings_icon_color))
|
||||||
/**
|
$mp_icon_color = $mp_settings_icon_color;
|
||||||
* add scripts and styles to the header or the footer
|
|
||||||
*/
|
|
||||||
|
|
||||||
function mp_enqueue_scripts() {
|
|
||||||
// https://developers.google.com/maps/documentation/javascript/marker-clustering
|
|
||||||
$marker_clusterer = "https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js";
|
|
||||||
|
|
||||||
wp_enqueue_style( 'mp_style', plugins_url('styles/mp_style.css', __FILE__), '', '', '');
|
|
||||||
wp_enqueue_script('mp_marker_clusterer', $marker_clusterer, '', '', true);
|
|
||||||
wp_enqueue_script('mp_init_map', plugins_url('scripts/mp_init_map.js', __FILE__), ['mp_marker_clusterer'],'', true);
|
|
||||||
wp_enqueue_script('mp_google_api', mp_url_api(), ['mp_init_map'], '', true);
|
|
||||||
|
|
||||||
mp_add_to_scripts();
|
|
||||||
}
|
|
||||||
add_action( 'wp_enqueue_scripts', 'mp_enqueue_scripts' );
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -74,11 +61,25 @@ add_filter('script_loader_tag', 'mp_tag_scripts', 10, 2);
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* when 'shortcode' found in page, replace by return
|
* when 'shortcode' found in page, enqueue scripts and styles,
|
||||||
|
* run php script, and replace shortcode by return value
|
||||||
*/
|
*/
|
||||||
|
|
||||||
function mp_add_div() {
|
function mp_add_div() {
|
||||||
$mp_api_script = '<div id="ljdp_map">map here</div>';
|
|
||||||
|
// https://developers.google.com/maps/documentation/javascript/marker-clustering
|
||||||
|
$marker_clusterer = "https://unpkg.com/@googlemaps/markerclusterer/dist/index.min.js";
|
||||||
|
|
||||||
|
wp_enqueue_style( 'mp_style', plugins_url('styles/mp_style.css', __FILE__), '', '', '');
|
||||||
|
wp_enqueue_script('mp_errors_maps', plugins_url('scripts/mp_errors_map.js', __FILE__), '', '', true);
|
||||||
|
wp_enqueue_script('mp_marker_clusterer', $marker_clusterer, ['mp_errors_maps'], '', true);
|
||||||
|
wp_enqueue_script('mp_init_map', plugins_url('scripts/mp_init_map.js', __FILE__), ['mp_marker_clusterer'],'', true);
|
||||||
|
wp_enqueue_script('mp_google_api', mp_url_api(), ['mp_init_map'], '', true);
|
||||||
|
|
||||||
|
mp_add_to_scripts();
|
||||||
|
|
||||||
|
$mp_api_script = '<div id="ljdp_map"></div>';
|
||||||
|
|
||||||
return $mp_api_script;
|
return $mp_api_script;
|
||||||
}
|
}
|
||||||
add_shortcode('lejourduprof_map', 'mp_add_div');
|
add_shortcode('lejourduprof_map', 'mp_add_div');
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
require_once(dirname(__FILE__) . '/mp_get_markers.php');
|
require_once(dirname(__FILE__) . '/mp_get_events.php');
|
||||||
|
|
||||||
function mp_php_to_js($php_var, $js_var_name) {
|
function mp_php_to_js($php_var, $js_var_name) {
|
||||||
$js_var = 'let ' . $js_var_name . ' = ';
|
$js_var = 'let ' . $js_var_name . ' = ';
|
||||||
@@ -12,13 +12,15 @@ function mp_php_to_js($php_var, $js_var_name) {
|
|||||||
function mp_add_to_scripts() {
|
function mp_add_to_scripts() {
|
||||||
global $mp_icon_size;
|
global $mp_icon_size;
|
||||||
global $mp_icon_url;
|
global $mp_icon_url;
|
||||||
// global $mp_icon_label_color;
|
global $mp_icon_cluster_url;
|
||||||
$markers = mp_get_published_markers();
|
global $mp_icon_color;
|
||||||
|
$events = mp_get_published_events();
|
||||||
|
|
||||||
wp_add_inline_script('mp_init_map', mp_php_to_js($markers, 'locations'), 'before');
|
wp_add_inline_script('mp_init_map', mp_php_to_js($events, 'events'), 'before');
|
||||||
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_url, 'icon_url'), 'before');
|
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_url, 'icon_url'), 'before');
|
||||||
|
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_cluster_url, 'icon_cluster_url'), 'before');
|
||||||
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_size, 'icon_size'), 'before');
|
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_size, 'icon_size'), 'before');
|
||||||
// wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_label_color, 'icon_label_color'), 'before');
|
wp_add_inline_script('mp_init_map', mp_php_to_js($mp_icon_color, 'icon_color'), 'before');
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
141
srcs/plugins/map_prof/mp_get_events.php
Normal file
141
srcs/plugins/map_prof/mp_get_events.php
Normal file
@@ -0,0 +1,141 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
FORMS FIELDS
|
||||||
|
|
||||||
|
0: "engagement"
|
||||||
|
1: "fichier"
|
||||||
|
2: "liste_des_depenses"
|
||||||
|
3: "montant_demande"
|
||||||
|
4: "recettes_prevues"
|
||||||
|
5: "depenses_prevues"
|
||||||
|
6: "participation"
|
||||||
|
7: "plan_de_communication"
|
||||||
|
8: "composition_autres"
|
||||||
|
9: "composition_4"
|
||||||
|
10: "composition_3"
|
||||||
|
11: "composition_2"
|
||||||
|
12: "composition_1"
|
||||||
|
13: "composition"
|
||||||
|
14: "resultats_attendus"
|
||||||
|
15: "public_vise"
|
||||||
|
16: "activite_concerne"
|
||||||
|
17: "description_longue"
|
||||||
|
18: "description_courte"
|
||||||
|
--- 19: "categorie"
|
||||||
|
20: "se_connecter"
|
||||||
|
21: "lien_internet"
|
||||||
|
22: "adresse_courriel_de_contact"
|
||||||
|
--- 23: "heure_de_fin"
|
||||||
|
--- 24: "heure_de_debut"
|
||||||
|
--- 25: "date"
|
||||||
|
26: "map"
|
||||||
|
--- 27: "pays"
|
||||||
|
--- 28: "ville"
|
||||||
|
--- 29: "adresse"
|
||||||
|
30: "mode"
|
||||||
|
31: "fonction"
|
||||||
|
32: "institution"
|
||||||
|
33: "telephone"
|
||||||
|
34: "adresse_courriel"
|
||||||
|
--- 35: "prenom"
|
||||||
|
--- 36: "nom"
|
||||||
|
*/
|
||||||
|
|
||||||
|
// FUNCTION TO RETRIEVE FORMS FIELDS
|
||||||
|
// not used anymore
|
||||||
|
//
|
||||||
|
//function mp_get_form_fields() {
|
||||||
|
// $get_form_args = array(
|
||||||
|
// 'numberposts' => -1,
|
||||||
|
// 'post_status' => 'publish',
|
||||||
|
// 'post_type' => 'acf-field',
|
||||||
|
// );
|
||||||
|
// $forms = get_posts($get_form_args);
|
||||||
|
// $fields = [];
|
||||||
|
// foreach ($forms as $form) {
|
||||||
|
// $field = $form->post_excerpt;
|
||||||
|
// array_push($fields, $field);
|
||||||
|
// }
|
||||||
|
// return $fields;
|
||||||
|
//}
|
||||||
|
|
||||||
|
function mp_get_published_posts() {
|
||||||
|
|
||||||
|
// $post_args = array(
|
||||||
|
// 'numberposts' => -1,
|
||||||
|
// 'post_status' => 'draft',
|
||||||
|
// //'post_status' => 'publish',
|
||||||
|
// 'post_type' => 'post',
|
||||||
|
// );
|
||||||
|
// $post_list = get_posts($post_args);
|
||||||
|
// foreach ($post_list as $post) {
|
||||||
|
// wp_update_post(array(
|
||||||
|
// 'ID' => $post->ID,
|
||||||
|
// //'post_status' => 'draft',
|
||||||
|
// 'post_status' => 'publish',
|
||||||
|
// ));
|
||||||
|
// }
|
||||||
|
|
||||||
|
$get_posts_args = array(
|
||||||
|
'numberposts' => -1,
|
||||||
|
'post_status' => 'publish',
|
||||||
|
'post_type' => 'post',
|
||||||
|
);
|
||||||
|
$posts_published = get_posts($get_posts_args);
|
||||||
|
return $posts_published;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mp_fill_fields_value($id) {
|
||||||
|
$fields = array(
|
||||||
|
"heure_de_debut",
|
||||||
|
"heure_de_fin",
|
||||||
|
"categorie",
|
||||||
|
"date",
|
||||||
|
"pays",
|
||||||
|
"ville",
|
||||||
|
"adresse",
|
||||||
|
"prenom",
|
||||||
|
"nom",
|
||||||
|
);
|
||||||
|
$event = (object)[];
|
||||||
|
foreach($fields as $field) {
|
||||||
|
$event->$field = get_field($field, $id);
|
||||||
|
}
|
||||||
|
$presentiel = get_field("mode", $id);
|
||||||
|
$event->irl = false;
|
||||||
|
if ($presentiel[0] === "En présentiel")
|
||||||
|
$event->irl = true;
|
||||||
|
return $event;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mp_get_coordinates(&$marker) {
|
||||||
|
global $mp_api_key;
|
||||||
|
$address = $marker->adresse . ","
|
||||||
|
. $marker->ville . ","
|
||||||
|
. $marker->pays;
|
||||||
|
$geolocation = 'https://maps.googleapis.com/maps/api/geocode/json'
|
||||||
|
. '?address=' . urlencode($address)
|
||||||
|
. '&key=' . $mp_api_key;
|
||||||
|
|
||||||
|
$jsoncontent = file_get_contents($geolocation);
|
||||||
|
$content = json_decode($jsoncontent);
|
||||||
|
$coordinates = $content->results[0]->geometry->location;
|
||||||
|
return $coordinates;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mp_get_published_events() {
|
||||||
|
$posts_list = mp_get_published_posts();
|
||||||
|
$events = [];
|
||||||
|
foreach ($posts_list as $post) {
|
||||||
|
$event = mp_fill_fields_value($post->ID);
|
||||||
|
$event->id = $post->ID;
|
||||||
|
$event->title = $post->post_title;
|
||||||
|
// $event->coordinates = mp_get_coordinates($event);
|
||||||
|
array_push($events, $event);
|
||||||
|
}
|
||||||
|
mp_console_log($events);
|
||||||
|
return $events;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
@@ -1,229 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
function mp_get_form_fields() {
|
|
||||||
$get_form_args = array(
|
|
||||||
'numberposts' => -1,
|
|
||||||
'post_status' => 'publish',
|
|
||||||
'post_type' => 'acf-field',
|
|
||||||
);
|
|
||||||
$forms = get_posts($get_form_args);
|
|
||||||
$fields = [];
|
|
||||||
foreach ($forms as $form) {
|
|
||||||
$field = $form->post_excerpt;
|
|
||||||
array_push($fields, $field);
|
|
||||||
}
|
|
||||||
return $fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_get_published_posts() {
|
|
||||||
// $get_posts_args = array(
|
|
||||||
// 'numberposts' => -1,
|
|
||||||
// 'post_status' => 'publish',
|
|
||||||
// 'post_type' => 'post',
|
|
||||||
// );
|
|
||||||
// $posts_published = get_posts($get_posts_args);
|
|
||||||
// mp_console_log("posts published: ");
|
|
||||||
// mp_console_log($posts_published);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
|
|
||||||
// $get_posts_args = array(
|
|
||||||
// 'numberposts' => -1,
|
|
||||||
// 'post_status' => 'publish',
|
|
||||||
// 'post_type' => 'acf-field',
|
|
||||||
// );
|
|
||||||
// $posts_published = get_posts($get_posts_args);
|
|
||||||
// mp_console_log("acf published: ");
|
|
||||||
// mp_console_log($posts_published);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// $list_fields = [];
|
|
||||||
// foreach ($posts_published as $post) {
|
|
||||||
// $field = $post->post_excerpt;
|
|
||||||
// array_push($list_fields, $field);
|
|
||||||
// }
|
|
||||||
// mp_console_log($list_fields);
|
|
||||||
|
|
||||||
// $get_posts_args = array(
|
|
||||||
// 'numberposts' => 1,
|
|
||||||
// 'post_status' => 'draft',
|
|
||||||
// 'post_type' => 'post',
|
|
||||||
// );
|
|
||||||
// $posts_published = get_posts($get_posts_args);
|
|
||||||
// mp_console_log("post draft: ");
|
|
||||||
// mp_console_log($posts_published);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
|
|
||||||
// $get_posts_args = array(
|
|
||||||
// 'numberposts' => 1,
|
|
||||||
// 'post_status' => 'draft',
|
|
||||||
// 'post_type' => 'acf-field',
|
|
||||||
// );
|
|
||||||
// $posts_published = get_posts($get_posts_args);
|
|
||||||
// mp_console_log("acf draft: ");
|
|
||||||
// mp_console_log($posts_published);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
|
|
||||||
$get_posts_args = array(
|
|
||||||
'numberposts' => -1,
|
|
||||||
'post_status' => 'publish',
|
|
||||||
'post_type' => 'post',
|
|
||||||
);
|
|
||||||
$posts_published = get_posts($get_posts_args);
|
|
||||||
// mp_console_log("posts: ");
|
|
||||||
// mp_console_log($posts_published);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// $post = $posts_published[1];
|
|
||||||
// mp_console_log("post :");
|
|
||||||
// mp_console_log($post);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// $adresse = get_field('adresse', $post->ID);
|
|
||||||
// mp_console_log("field adresse :");
|
|
||||||
// mp_console_log($adresse);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// $adresse = get_field('fonction', $post->ID);
|
|
||||||
// mp_console_log("field fonction :");
|
|
||||||
// mp_console_log($adresse);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
|
|
||||||
return $posts_published;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_extract_address(&$content) {
|
|
||||||
$begin = "<p>adresse: ";
|
|
||||||
$end = "</p>";
|
|
||||||
$len = strlen($begin);
|
|
||||||
$address = substr($content, strpos($content, $begin)+$len);
|
|
||||||
$address = substr($content, 0, strpos($content, $end));
|
|
||||||
return $address;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_convert_coordinates(&$address) {
|
|
||||||
global $mp_api_key;
|
|
||||||
$geolocation = 'https://maps.googleapis.com/maps/api/geocode/json'
|
|
||||||
. '?address=' . urlencode($address)
|
|
||||||
. '&key=' . $mp_api_key;
|
|
||||||
|
|
||||||
$jsoncontent = file_get_contents($geolocation);
|
|
||||||
$content = json_decode($jsoncontent);
|
|
||||||
$coordinates = $content->results[0]->geometry->location;
|
|
||||||
return $coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_get_coordinates(&$marker) {
|
|
||||||
global $mp_api_key;
|
|
||||||
$address = $marker->adresse . ","
|
|
||||||
. $marker->ville . ","
|
|
||||||
. $marker->pays;
|
|
||||||
mp_console_log("address:");
|
|
||||||
mp_console_log($address);
|
|
||||||
$geolocation = 'https://maps.googleapis.com/maps/api/geocode/json'
|
|
||||||
. '?address=' . urlencode($address)
|
|
||||||
. '&key=' . $mp_api_key;
|
|
||||||
|
|
||||||
$jsoncontent = file_get_contents($geolocation);
|
|
||||||
$content = json_decode($jsoncontent);
|
|
||||||
$coordinates = $content->results[0]->geometry->location;
|
|
||||||
return $coordinates;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_post_content($post) {
|
|
||||||
|
|
||||||
//temp
|
|
||||||
$content = $post->post_content;
|
|
||||||
|
|
||||||
// $args = array(
|
|
||||||
// 'page_id' => 29718
|
|
||||||
// );
|
|
||||||
// $post_query = new WP_Query( $args );
|
|
||||||
// mp_console_log("0 tmp_content:");
|
|
||||||
// if ( $post_query->have_posts() ) {
|
|
||||||
// mp_console_log("1 tmp_content:");
|
|
||||||
// while ( $post_query->have_posts() ) {
|
|
||||||
// $post_query->the_post();
|
|
||||||
// $tmp_content = apply_filters( 'the_content', get_the_content() );
|
|
||||||
// mp_console_log("2 tmp_content:");
|
|
||||||
// mp_console_log($tmp_content);
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
// wp_reset_query();
|
|
||||||
|
|
||||||
// $the_content = $post->post_content;
|
|
||||||
|
|
||||||
// $the_content = get_the_content(null, false, $post->ID);
|
|
||||||
|
|
||||||
// $the_content = apply_filters( 'the_content', $post->post_content );
|
|
||||||
// $the_content = apply_filters( 'the_content', $post->post_content, 99 );
|
|
||||||
// $the_content = apply_filters( 'the_content', $post->post_content, -1 );
|
|
||||||
|
|
||||||
// $the_content = apply_filters( 'the_content', get_the_content(null, false, $post->ID) );
|
|
||||||
// $the_content = apply_filters( 'the_content', get_the_content(null, false, $post->ID), 99 );
|
|
||||||
// $the_content = apply_filters( 'the_content', get_the_content(null, false, $post->ID), -1 );
|
|
||||||
|
|
||||||
// $post_id = $post->ID;
|
|
||||||
// $post_type = $post->post_type;
|
|
||||||
// mp_console_log("post_type:");
|
|
||||||
// mp_console_log($post_type);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// // "post"
|
|
||||||
// $taxonomies = get_object_taxonomies($post_type);
|
|
||||||
// mp_console_log("taxonomies:");
|
|
||||||
// mp_console_log($taxonomies);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// // ["category", "post_tag", "post_format"]
|
|
||||||
// foreach ($taxonomies as $taxonomy_key => $taxonomy) {
|
|
||||||
// $terms = get_the_terms($post_id, $taxonomy_key);
|
|
||||||
// mp_console_log("terms (key = ".$taxonomy_key.") : ");
|
|
||||||
// mp_console_log($terms);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// $terms = get_the_terms($post_id, $taxonomy);
|
|
||||||
// mp_console_log("terms (value = ".$taxonomy.") : ");
|
|
||||||
// mp_console_log($terms);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
// }
|
|
||||||
|
|
||||||
// mp_console_log("the_content:");
|
|
||||||
// mp_console_log($the_content);
|
|
||||||
// mp_console_log("\n");
|
|
||||||
|
|
||||||
return $content;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_retrieve_address($posts_list) {
|
|
||||||
$locs = array();
|
|
||||||
foreach ($posts_list as $post) {
|
|
||||||
$content = mp_post_content($post);
|
|
||||||
$address = mp_extract_address($post);
|
|
||||||
if (strlen($address) > 0)
|
|
||||||
{
|
|
||||||
$lat_lng = mp_convert_coordinates($address);
|
|
||||||
if ($lat_lng !== null)
|
|
||||||
array_push($locs, $lat_lng);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
return $locs;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_fill_fields_value(&$form_fields, $id) {
|
|
||||||
$marker = (object)[];
|
|
||||||
foreach($form_fields as $field) {
|
|
||||||
$marker->$field = get_field($field, $id);
|
|
||||||
}
|
|
||||||
return $marker;
|
|
||||||
}
|
|
||||||
|
|
||||||
function mp_get_published_markers() {
|
|
||||||
$posts_list = mp_get_published_posts();
|
|
||||||
$form_fields = mp_get_form_fields();
|
|
||||||
$markers = [];
|
|
||||||
foreach ($posts_list as $post) {
|
|
||||||
$marker = mp_fill_fields_value($form_fields, $post->ID);
|
|
||||||
$marker->coordinates = mp_get_coordinates($marker);
|
|
||||||
array_push($markers, $marker);
|
|
||||||
}
|
|
||||||
mp_console_log("markers:");
|
|
||||||
mp_console_log($markers);
|
|
||||||
|
|
||||||
$tmp_markers = mp_retrieve_address($posts_list);
|
|
||||||
return $tmp_markers;
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
7
srcs/plugins/map_prof/scripts/mp_errors_map.js
Normal file
7
srcs/plugins/map_prof/scripts/mp_errors_map.js
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
function print_error(error) {
|
||||||
|
let div_map = document.getElementById("ljdp_map");
|
||||||
|
let p_err = document.createElement('p');
|
||||||
|
|
||||||
|
p_err.textContent = error;
|
||||||
|
div_map.after(p_err);
|
||||||
|
}
|
||||||
@@ -1,61 +1,114 @@
|
|||||||
function mp_init_map() {
|
function mp_init_map() {
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* following variable are created by mp_locations.php
|
* following variable are created by mp_add_to_script.php
|
||||||
* - let locations = [{lat:xxx, lng:xxx}, {}...]
|
* - let events = [{}, {}...]
|
||||||
* - let icon_url
|
* - let icon_url = ""
|
||||||
* - let icon_size[x, y]
|
* - let icon_cluster_url = ""
|
||||||
|
* - let icon_color = ""
|
||||||
|
* - let icon_size = [x, y]
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* SETTINGS
|
||||||
|
*/
|
||||||
|
|
||||||
|
//print_error("error");
|
||||||
|
console.log("hello");
|
||||||
|
|
||||||
// default map center to france
|
// default map center to france
|
||||||
let map_center = {lat:46.227638, lng:2.213749};
|
let map_center = {lat:46.227638, lng:2.213749};
|
||||||
if (locations.length > 0)
|
let map_options = {
|
||||||
map_center = locations[0];
|
/* map options : https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions */
|
||||||
|
|
||||||
let map = new google.maps.Map(
|
|
||||||
document.getElementById("ljdp_map"),
|
|
||||||
{
|
|
||||||
// mpa options : https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions
|
|
||||||
|
|
||||||
// maps controls :
|
|
||||||
disableDefaultUI: true,
|
disableDefaultUI: true,
|
||||||
zoomControl: true,
|
zoomControl: true,
|
||||||
scaleControl: true,
|
scaleControl: true,
|
||||||
|
zoom: 2,
|
||||||
// other controls :
|
|
||||||
zoom: 5,
|
|
||||||
//gestureHandling: "cooperative",
|
//gestureHandling: "cooperative",
|
||||||
//gestureHandling: "greedy",
|
//gestureHandling: "greedy",
|
||||||
gestureHandling: "none",
|
//gestureHandling: "none",
|
||||||
//gestureHandling: "auto",
|
//gestureHandling: "auto",
|
||||||
//disableDoubleClickZoom: "false",
|
//disableDoubleClickZoom: "false", //deprecated
|
||||||
//draggable: "true",
|
//draggable: "true", //deprecated
|
||||||
center: map_center,
|
center: map_center,
|
||||||
}
|
}
|
||||||
);
|
|
||||||
//map.addListener("zoom_changed", () => {
|
let svg_icon = window.btoa(`
|
||||||
// // do nothing ?
|
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
|
||||||
//});
|
<circle cx="50%" cy="50%" r="27%" stroke="#ba197a" stroke-width="26" fill="#ffffff80" />
|
||||||
let marker, icon, label;
|
<polygon points="35,80 65,80 50,100" fill="#ba197a" />
|
||||||
icon = {
|
</svg>
|
||||||
url: icon_url,
|
`);
|
||||||
|
let icon_options = {
|
||||||
|
url: `data:image/svg+xml;base64,${svg_icon}`,
|
||||||
scaledSize: new google.maps.Size(icon_size[0], icon_size[1]),
|
scaledSize: new google.maps.Size(icon_size[0], icon_size[1]),
|
||||||
};
|
};
|
||||||
label = {
|
let label_options = {
|
||||||
// text: String(count),
|
//text: String(count),
|
||||||
text: "hello",
|
text: "?",
|
||||||
// color: icon_label_color,
|
//color: icon_label_color,
|
||||||
fontSize: "12px",
|
fontSize: "12px",
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DRAW MAP
|
||||||
|
*/
|
||||||
|
|
||||||
|
let map = new google.maps.Map(document.getElementById("ljdp_map"), map_options);
|
||||||
let markers = [];
|
let markers = [];
|
||||||
for (loc of locations) {
|
for (ev of events) {
|
||||||
marker = new google.maps.Marker({
|
marker = new google.maps.Marker({
|
||||||
position: loc,
|
position: ev.coordinates,
|
||||||
map: map,
|
map: map,
|
||||||
icon: icon,
|
icon: icon_options,
|
||||||
// label: label,
|
//label: label_options,
|
||||||
});
|
});
|
||||||
markers.push(marker);
|
markers.push(marker);
|
||||||
};
|
};
|
||||||
new markerClusterer.MarkerClusterer({ map, markers });
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* DRAW CLUSTERS
|
||||||
|
*/
|
||||||
|
|
||||||
|
let renderer = {
|
||||||
|
render({ count, position }, stats) {
|
||||||
|
|
||||||
|
/* CLUSTERS SETTINGS */
|
||||||
|
|
||||||
|
let cluster_icon_size = [
|
||||||
|
icon_size[0] + ( 2.5 * (count - 2) ),
|
||||||
|
icon_size[1] + ( 2.5 * (count - 2) )
|
||||||
|
];
|
||||||
|
let cluster_svg = window.btoa(`
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="${cluster_icon_size[0]}" height="${cluster_icon_size[1]}">
|
||||||
|
<circle cx="50%" cy="50%" r="37%" stroke="#ba197a" stroke-width="6" fill="#ffffff80" />
|
||||||
|
</svg>
|
||||||
|
`);
|
||||||
|
let cluster_icon = {
|
||||||
|
url: `data:image/svg+xml;base64,${cluster_svg}`,
|
||||||
|
scaledSize: new google.maps.Size(cluster_icon_size[0], cluster_icon_size[1]),
|
||||||
|
};
|
||||||
|
let cluster_label = {
|
||||||
|
text: String(count),
|
||||||
|
color: "#ba197a",
|
||||||
|
fontSize: "12px",
|
||||||
|
fontWeight: "bold",
|
||||||
|
};
|
||||||
|
let cluster_title = `Cluster of ${count} markers`;
|
||||||
|
let cluster_zIndex = Number(google.maps.Marker.MAX_ZINDEX) + count;
|
||||||
|
|
||||||
|
return new google.maps.Marker({
|
||||||
|
position,
|
||||||
|
icon: cluster_icon,
|
||||||
|
label: cluster_label,
|
||||||
|
title: cluster_title,
|
||||||
|
zIndex: cluster_zIndex,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
new markerClusterer.MarkerClusterer({ map, markers, renderer });
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,24 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* decommenter les parametres pour les appliquer
|
||||||
|
*
|
||||||
* les parametres suivants sont optionnels pour le fonctionnement du plugin
|
* les parametres suivants sont optionnels pour le fonctionnement du plugin
|
||||||
* le plugin fonctionne sans eux, grace a des valeurs par defauts
|
* le plugin fonctionne sans eux, grace a des valeurs par defauts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* dimensions de l'icone des marqueurs */
|
|
||||||
$mp_icon_size_setting = [40, 40];
|
|
||||||
|
|
||||||
/* */
|
/*
|
||||||
//$mp_icon_label_color = "red";
|
dimensions de l'icone des marqueurs
|
||||||
|
valeur par defaut [40, 40]
|
||||||
|
*/
|
||||||
|
//$mp_settings_icon_size = [50, 50];
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
couleur des markers
|
||||||
|
valeur par defaut "#ba197a"
|
||||||
|
*/
|
||||||
|
//$mp_settings_icon_color = "#d168a8";
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -7,8 +7,9 @@
|
|||||||
/* cle api de google maps */
|
/* cle api de google maps */
|
||||||
$mp_api_key = 'AIzaSyCvdGV2ssD4ov4a9CuIlQhoJyz5gWWiSvE';
|
$mp_api_key = 'AIzaSyCvdGV2ssD4ov4a9CuIlQhoJyz5gWWiSvE';
|
||||||
|
|
||||||
/* nom du fichier image situe dans le dossier "images" */
|
/* nom des fichiers image situe dans le dossier "images" */
|
||||||
/* pour l'icone des marqueurs sur la carte */
|
/* pour les icones des marqueurs sur la carte */
|
||||||
$mp_icon_file = 'marker.png';
|
$mp_icon_file = 'marker.png';
|
||||||
|
$mp_icon_cluster_file = 'marker_cluster.png';
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -25,3 +25,4 @@ button.gm-control-active {
|
|||||||
button.gm-control-active ~ div {
|
button.gm-control-active ~ div {
|
||||||
height: 10px !important;
|
height: 10px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user