PluginProbe
WP Directory Kit / 1.3.4
WP Directory Kit v1.3.4
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 1.4.0 1.4.1 All 35 releases
wpdirectorykit / elementor-elements / views / wdk-map.php

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

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