PluginProbe
WP Directory Kit / 1.5.5
WP Directory Kit v1.5.5
1.5.9 1.5.7 1.5.6 1.5.5 1.5.4 1.5.3 trunk 1.1.0 1.1.6 1.1.8 1.2.3 1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.3.8 All 37 releases
wpdirectorykit / elementor-elements / views / wdk-map.php

wdk-map.php in WP Directory Kit 1.5.5, at elementor-elements/views/wdk-map.php

344 lines 18.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * The template for Element Listings Results Map.
4 * This is the template that elementor element map with markers of listings, show results
5 *
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit; // Exit if accessed directly.
10 }
11
12 ?>
13
14 <div class="wdk-element" id="wdk_el_<?php echo esc_html($id_element);?>">
15 <div class="wdk-map" class="wdk_map_results">
16 <div id="wdk_map_results_<?php echo esc_html($id_element);?>" data-auto-search="enable" style="height:<?php echo esc_attr($settings['conf_custom_map_height']['size']);?>px"
17 data-el_id="<?php echo esc_attr($this->get_id());?>"
18 data-el_type="<?php echo esc_attr($this->get_name());?>"
19 <?php
20 $post_id = get_the_ID();
21 $post_object_id = get_queried_object_id();
22 if($post_object_id)
23 $post_id = $post_object_id;
24
25 global $wdk_listing_page_id;
26 if(!empty($wdk_listing_page_id))
27 $post_id = $wdk_listing_page_id;
28 ?>
29 data-el_page_id="<?php echo esc_attr($post_id);?>"
30
31 class="wdk_map_results <?php echo wmvc_show_data('styles_thmbn_des_type',$settings, '');?>
32 <?php if
33 (
34 wdk_get_option('wdk_experimental_features') && wdk_get_option('wdk_experimental_ajax_results') &&
35 isset($settings['is_ajax_enable']) && $settings['is_ajax_enable'] == 'yes'
36 ):?>
37 ajax_results_enabled
38 <?php endif;?>
39 " >
40 </div>
41 <form action="" class="wdk-search-form map" style="wdk-hidden">
42 <input name="rectangle_ne" type="hidden" class="wdk-hidden" value="<?php echo isset($_GET['rectangle_ne']) ? esc_attr(sanitize_text_field(wp_unslash($_GET['rectangle_ne']))) : '';?>"/>
43 <input name="rectangle_sw" type="hidden" class="wdk-hidden" value="<?php echo isset($_GET['rectangle_sw']) ? esc_attr(sanitize_text_field(wp_unslash($_GET['rectangle_sw']))) : '';?>"/>
44 </form>
45 </div>
46 </div>
47 <?php
48 $zoom_index = $settings['conf_custom_map_zoom_index']['size'];
49 ?>
50 <?php
51 if($lat == 0)
52 {
53 $lat = wmvc_show_data('conf_custom_map_center_gps_lat', $settings);
54 $lng = wmvc_show_data('conf_custom_map_center_gps_lng', $settings);
55 }
56 ?>
57 <?php
58 $WMVC = &wdk_get_instance();
59 $WMVC->model('category_m');
60 if (!$is_edit_mode)
61 ob_start();
62 ?>
63 <script>
64 var wdk_map ='';
65 var wdk_markers = [];
66 var wdk_clusters ='';
67 var wdk_jpopup_customOptions =
68 {
69 'maxWidth': 'initial',
70 'width': 'initial',
71 'className' : 'popupCustom'
72 };
73 jQuery(document).ready(function($) {
74 if(wdk_clusters=='')
75 wdk_clusters = L.markerClusterGroup({spiderfyOnMaxZoom: true, showCoverageOnHover: false, zoomToBoundsOnClick: true});
76 wdk_map = L.map('wdk_map_results_<?php echo esc_html($id_element);?>', {
77 center: ["<?php echo esc_js($lat);?>","<?php echo esc_js($lng);?>"],
78 zoom: "<?php echo esc_js($zoom_index);?>",
79 scrollWheelZoom: <?php echo (wmvc_show_data('enable_scrollWheelZoom', $settings, '') == 'yes') ? 'true' : 'false'; ?>,
80 dragging: ((!L.Browser.mobile) ? (<?php if($settings['conf_custom_dragging'] == 'yes'):?> true <?php else:?> false <?php endif;?>) : (<?php if($settings['conf_custom_dragging_mobile'] == 'yes'):?> true <?php else:?> false <?php endif;?>)),
81 tap: !L.Browser.mobile,
82 fullscreenControl: true,
83 fullscreenControlOptions: {
84 position: 'topleft'
85 },
86 });
87
88 // Custom info label control on the top left of the map
89
90 <?php if($settings['conf_custom_dragging_mobile'] != 'yes'):?>
91 var InfoLabelControl = L.Control.extend({
92 options: {
93 position: 'topright'
94 },
95
96 onAdd: function (map) {
97 var container = L.DomUtil.create('div', 'wdk-map-info-label only_mobile');
98 container.innerHTML = '<?php echo esc_html__( 'Require 2 finger for map movement', 'wpdirectorykit' );?>';
99 return container;
100 }
101 });
102
103 wdk_map.addControl(new InfoLabelControl());
104 <?php endif;?>
105
106 L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
107 attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
108 }).addTo(wdk_map);
109
110 <?php if(!isset($settings['disable_rectangle']) || $settings['disable_rectangle'] != 'yes'):?>
111 let drawMap = wdk_map_draw(wdk_map, null, <?php if(isset($settings['enable_rectangle_auto_search']) && $settings['enable_rectangle_auto_search'] != 'yes'):?>false<?php else:?>true<?php endif;?>);
112
113 // define rectangle geographical bounds
114 <?php if(isset($_GET['rectangle_ne']) && isset($_GET['rectangle_sw'])) :?>
115 <?php if(wdk_is_gps($_GET['rectangle_ne']) && wdk_is_gps($_GET['rectangle_sw'])) :?>
116 var bounds = [[<?php echo isset($_GET['rectangle_ne']) ? esc_attr(sanitize_text_field(wp_unslash($_GET['rectangle_ne']))) : '';?>], [<?php echo isset($_GET['rectangle_sw']) ? esc_attr(sanitize_text_field(wp_unslash($_GET['rectangle_sw']))) : '';?>]];
117 drawMap.drawOuther(bounds);
118 <?php endif;?>
119 <?php endif;?>
120 <?php endif;?>
121
122 <?php if(!empty($settings['conf_custom_map_style']) && $settings['conf_custom_map_style'] =='custom' && !empty($settings['conf_custom_map_style_self'])):?>
123 var positron = L.tileLayer('<?php echo esc_js($settings['conf_custom_map_style_self']);?>').addTo(wdk_map);
124 <?php elseif(!empty($settings['conf_custom_map_style']) && $settings['conf_custom_map_style'] !='custom'):?>
125 <?php if($settings['conf_custom_map_style']=='google_map'):?>
126 <?php
127 wp_enqueue_script('google-map-api', 'https://maps.googleapis.com/maps/api/js?key='.wmvc_show_data('google_map_key', $settings, ''));
128 ?>
129 var roadMutant = L.gridLayer
130 .googleMutant({
131 type: "roadmap",
132 });
133
134 var satMutant = L.gridLayer.googleMutant({
135 type: "satellite",
136 });
137
138 var terrainMutant = L.gridLayer.googleMutant({
139 type: "terrain",
140 });
141
142 var hybridMutant = L.gridLayer.googleMutant({
143 type: "hybrid",
144 });
145
146 var styleMutant = L.gridLayer.googleMutant({
147 styles: [
148 { elementType: "labels", stylers: [{ visibility: "off" }] },
149 { featureType: "water", stylers: [{ color: "#444444" }] },
150 { featureType: "landscape", stylers: [{ color: "#eeeeee" }] },
151 { featureType: "road", stylers: [{ visibility: "off" }] },
152 { featureType: "poi", stylers: [{ visibility: "off" }] },
153 { featureType: "transit", stylers: [{ visibility: "off" }] },
154 { featureType: "administrative", stylers: [{ visibility: "off" }] },
155 {
156 featureType: "administrative.locality",
157 stylers: [{ visibility: "off" }],
158 },
159 ],
160 maxZoom: 24,
161 type: "roadmap",
162 });
163
164 var trafficMutant = L.gridLayer.googleMutant({
165 type: "roadmap",
166 });
167 trafficMutant.addGoogleLayer("TrafficLayer");
168
169 var transitMutant = L.gridLayer.googleMutant({
170 type: "roadmap",
171 });
172
173 var satelliteMutant = L.gridLayer.googleMutant({
174 type: "satellite",
175 });
176 transitMutant.addGoogleLayer("TransitLayer");
177
178 var google_map_style = roadMutant;
179 <?php switch (wmvc_show_data('google_map_default_type', $settings, 'roadMutant')){
180 case 'roadmap':
181 echo 'google_map_style=roadMutant';
182 break;
183 case 'aerial':
184 echo 'google_map_style=satMutant';
185 break;
186 case 'terrain':
187 echo 'google_map_style=terrainMutant';
188 break;
189 case 'hybrid':
190 echo 'google_map_style=hybridMutant';
191 break;
192 case 'satellite':
193 echo 'google_map_style=satelliteMutant';
194 break;
195 case 'styles':
196 echo 'google_map_style=styleMutant';
197 break;
198 case 'traffic':
199 echo 'google_map_style=trafficMutant';
200 break;
201 case 'transit':
202 echo 'google_map_style=transitMutant';
203 break;
204 }
205 ?>
206
207 google_map_style.addTo(wdk_map);
208 L.control.layers(
209 {
210 Roadmap: roadMutant,
211 Aerial: satMutant,
212 Terrain: terrainMutant,
213 Hybrid: hybridMutant,
214 Satellite: satelliteMutant,
215 Traffic: trafficMutant,
216 Transit: transitMutant,
217 }
218 ).addTo(wdk_map);
219
220 <?php elseif(in_array($settings['conf_custom_map_style'], array(
221 'https://{s}.tile.thunderforest.com/mobile-atlas/{z}/{x}/{y}.png',
222 'https://{s}.tile.thunderforest.com/cycle/{z}/{x}/{y}.png',
223 'https://{s}.tile.thunderforest.com/transport-dark/{z}/{x}/{y}.png',
224 'https://{s}.tile.thunderforest.com/landscape/{z}/{x}/{y}.png',
225 'https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png',
226 'https://{s}.tile.thunderforest.com/pioneer/{z}/{x}/{y}.png',
227 'https://{s}.tile.thunderforest.com/neighbourhood/{z}/{x}/{y}.png',
228 ))):?>
229 var positron = L.tileLayer('<?php echo esc_js($settings['conf_custom_map_style']);?><?php echo (wmvc_show_data('thunderforest_map_key', $settings, false)) ? '?apikey='.esc_js(wmvc_show_data('thunderforest_map_key', $settings)) : '';?>').addTo(wdk_map);
230 <?php elseif(in_array($settings['conf_custom_map_style'], array(
231 'https://{s}.tile.jawg.io/jawg-terrain/{z}/{x}/{y}{r}.png',
232 'https://{s}.tile.jawg.io/jawg-streets/{z}/{x}/{y}{r}.png',
233 'https://{s}.tile.jawg.io/jawg-dark/{z}/{x}/{y}{r}.png',
234 'https://{s}.tile.jawg.io/jawg-light/{z}/{x}/{y}{r}.png',
235 ))):?>
236 var positron = L.tileLayer('<?php echo esc_js($settings['conf_custom_map_style']);?><?php echo (wmvc_show_data('jawg_map_key', $settings, false)) ? '?access-token='.esc_js(wmvc_show_data('jawg_map_key', $settings)) : '';?>').addTo(wdk_map);
237 <?php else:?>
238 var positron = L.tileLayer('<?php echo esc_js($settings['conf_custom_map_style']);?>').addTo(wdk_map);
239 <?php endif;?>
240 <?php endif;?>
241
242 var auto_marker_size = false;
243 <?php foreach($results as $key=>$listing): ?>
244 <?php if(!is_numeric(wmvc_show_data('lng', $listing)))continue;?>
245 <?php
246 $pin_icon = "";
247 $font_class = "";
248 $font_icon = $this->generate_icon($settings['conf_custom_map_pin_icon']);
249 $pin_icon = $settings['conf_custom_map_pin']['url'];
250
251 if(!empty(wmvc_show_data('category_id', $listing))){
252 $category = $WMVC->category_m->get_data(wmvc_show_data('category_id', $listing));
253 if(wmvc_show_data('marker_image_id', $category, false, TRUE, TRUE)){
254 $pin_icon = wdk_image_src($category, 'full', NULL,'marker_image_id');
255 } else if(!empty(wmvc_show_data('font_icon_code', $category))) {
256 $font_class = wmvc_show_data('font_icon_code', $category);
257 }
258 } else {
259 $font_class = "";
260 }
261
262 $listing_lat = $listing_lng = NULL;
263 $listing_lat = wmvc_show_data('lat', $listing);
264 $listing_lng = wmvc_show_data('lng', $listing);
265
266 if(wmvc_show_data('conf_hide_real_location', $settings) == 'yes') {
267 $gps = wdk_get_near_location($listing_lat, $listing_lng);
268
269 $listing_lat = wdk_move_gps($listing_lat);
270 $listing_lng = wdk_move_gps($listing_lng);
271 }
272
273 ?>
274 <?php if(!empty($settings['custom_marker_fields']) && substr($this->data['settings']['custom_marker_fields'], strpos($this->data['settings']['custom_marker_fields'],'__')+2) == 'first_image'):?>
275 auto_marker_size = true;
276 var innerMarker = '<div class="wdk_marker-container wdk_marker_label wdk_marker_clear category_id_<?php echo esc_js(wmvc_show_data('category_id', $listing));?>"><img src="<?php echo esc_js(wdk_image_src($listing));?>"></img></div>';
277
278 <?php elseif(!empty($settings['custom_marker_fields']) && wdk_field_value (substr($this->data['settings']['custom_marker_fields'], strpos($this->data['settings']['custom_marker_fields'],'__')+2), $listing)):?>
279 <?php
280 $field_id = substr($this->data['settings']['custom_marker_fields'], strpos($this->data['settings']['custom_marker_fields'],'__')+2);
281
282 $field_value = '';
283 $field_value .= apply_filters( 'wpdirectorykit/listing/field/prefix', wdk_field_option ($field_id, 'prefix'), $field_id);
284
285 /* if price field use like 1l */
286 if(wdk_field_option($field_id, 'is_price_format')) {
287
288 $value = wdk_field_value($field_id, $listing);
289 if($value>=1000) {
290 $value = apply_filters( 'wpdirectorykit/listing/field/value', number_format_i18n(wdk_filter_decimal($value/1000)), $field_id).'k';
291 } else {
292 $value = apply_filters( 'wpdirectorykit/listing/field/value', wdk_field_value_on_type($field_id, $listing), $field_id);
293 }
294
295 $field_value = wdk_filter_decimal($value);
296
297 } else {
298 $field_value .= apply_filters( 'wpdirectorykit/listing/field/value', wdk_field_value_on_type($field_id, $listing), $field_id);
299 }
300
301 $field_value .= apply_filters( 'wpdirectorykit/listing/field/suffix',wdk_field_option ($field_id, 'suffix'), $field_id);
302 ?>
303 auto_marker_size = true;
304 var innerMarker = '<div class="wdk_marker-container wdk_marker_label category_id_<?php echo esc_js(wmvc_show_data('category_id', $listing));?>"><?php echo esc_js(strip_tags($field_value));?></div>';
305 <?php elseif($pin_icon):?>
306 var image = '<?php echo esc_html($pin_icon);?>'; var innerMarker = '<div class="wdk_marker-container wdk_marker-container-image"><img src='+image+'></img></div>';
307 <?php elseif($font_icon && empty($font_class)):?>
308 var innerMarker = '<div class="wdk_marker-container category_id_<?php echo esc_js(wmvc_show_data('category_id', $listing));?>"><div class="front wdk_face"><?php echo wdk_viewe($font_icon);?></div><div class="wdk_marker-card"><div class="wdk_marker-arrow"></div></div></div>';
309 <?php else:?>
310 var innerMarker = '<div class="wdk_marker-container category_id_<?php echo esc_js(wmvc_show_data('category_id', $listing));?>"><div class="front wdk_face"><i class="<?php echo esc_html($font_class);?>"></i></div><div class="wdk_marker-card"><div class="wdk_marker-arrow"></div></div></div>';
311 <?php endif;?>
312
313 wdk_markers.push(wdk_generate_marker_ajax_popup('<?php echo esc_url(admin_url('admin-ajax.php'));?>','<?php echo esc_html(wmvc_show_data('post_id', $listing));?>','<?php echo esc_html($listing_lat);?>','<?php echo esc_html($listing_lng);?>',innerMarker, wdk_jpopup_customOptions, auto_marker_size
314 , <?php if(wmvc_show_data('disable_cluster', $settings) == 'yes'):?> false<?php else:?> true <?php endif;?> <?php if(wmvc_show_data('custom_layout_id', $settings)):?>, <?php echo esc_js(wmvc_show_data('custom_layout_id', $settings));?> <?php endif;?>));
315 <?php endforeach; ?>
316 wdk_map.addLayer(wdk_clusters);
317 /* set center */
318 if(wdk_markers.length){
319 var limits_center = [];
320 for (var i in wdk_markers) {
321 var latLngs = [ wdk_markers[i].getLatLng() ];
322 limits_center.push(latLngs)
323 };
324 var bounds = L.latLngBounds(limits_center);
325 <?php if(wdk_get_option('wdk_fixed_map_results_position') && wdk_get_option('wdk_default_lat') && wdk_get_option('wdk_default_lng')): ?>
326 wdk_map.setView(["<?php echo esc_js(wdk_get_option('wdk_default_lat'));?>","<?php echo esc_js(wdk_get_option('wdk_default_lng'));?>"]);
327 <?php elseif($settings['enable_custom_gps_center'] == 'yes'): ?>
328 wdk_map.setView(["<?php echo esc_js($settings['conf_custom_map_center_gps_lat']);?>","<?php echo esc_js($settings['conf_custom_map_center_gps_lng']);?>"]);
329 <?php else: ?>
330 wdk_map.fitBounds(bounds);
331 <?php endif; ?>
332 }
333 })
334 </script>
335 <?php
336
337 if (!$is_edit_mode) {
338 $js_content = ob_get_clean();
339 $js_content = str_replace(array('</script>','<script>'),'',$js_content );
340 wp_add_inline_script( 'wdk-elementor-main', $js_content );
341 }
342 ?>
343
344