diff --git a/assets/js/common.js b/assets/js/common.js index fde5748..3505d04 100644 --- a/assets/js/common.js +++ b/assets/js/common.js @@ -1,10 +1,7 @@ (function($) { 'use strict'; - hivepress.initGeolocation = function(container = null) { - if (container === null) { - container = $('body'); - } + hivepress.initGeolocation = function(container) { // Location container.find(hivepress.getSelector('location')).each(function() { @@ -315,13 +312,6 @@ } $(document).on('hivepress:init', function(event, container) { - if (!container.is('body')) { - hivepress.initGeolocation(container); - } + hivepress.initGeolocation(container); }); - - // Mapbox - if (typeof mapboxData !== 'undefined') { - hivepress.initGeolocation(); - } })(jQuery); diff --git a/assets/js/common.min.js b/assets/js/common.min.js index ba929fe..fef8326 100644 --- a/assets/js/common.min.js +++ b/assets/js/common.min.js @@ -1 +1 @@ -(function(a){"use strict";hivepress.initGeolocation=function(b=null){null===b&&(b=a("body")),b.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),b.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})},a(document).on("hivepress:init",function(a,b){b.is("body")||hivepress.initGeolocation(b)}),"undefined"!=typeof mapboxData&&hivepress.initGeolocation()})(jQuery); \ No newline at end of file +(function(a){"use strict";hivepress.initGeolocation=function(b){b.find(hivepress.getSelector("location")).each(function(){var b=a(this),c=b.closest("form"),d=b.find("input[type=text]"),e=c.find("input[data-coordinate=lat]"),f=c.find("input[data-coordinate=lng]"),g=c.find("input[data-region]"),h=b.find("a"),i={};if("undefined"!=typeof mapboxData){i={accessToken:mapboxData.apiKey,language:hivepressCoreData.language},b.data("countries")&&(i.countries=b.data("countries").join(",")),b.data("types")&&(i.types=b.data("types").join(","));var j=new MapboxGeocoder(i);j.addTo(b.get(0));var k=b.children(".mapboxgl-ctrl"),l=d.prop("attributes");d.remove(),d=k.find("input[type=text]"),a.each(l,function(){d.attr(this.name,this.value)}),k.detach().prependTo(b),j.on("result",function(a){var b=["place","district","region","country"];g.length&&(a.result.place_type.filter(a=>b.includes(a)).length?g.val(a.result.id):g.val("")),f.val(a.result.geometry.coordinates[0]),e.val(a.result.geometry.coordinates[1])})}else i={details:c,detailsAttribute:"data-coordinate"},b.data("countries")&&(i.componentRestrictions={country:b.data("countries")}),b.data("types")&&(i.types=b.data("types")),d.geocomplete(i),d.bind("geocode:result",function(c,e){var f=[],h=["locality","administrative_area_level_2","administrative_area_level_1","country"];g.length&&(e.address_components[0].types.filter(a=>h.includes(a)).length?g.val(e.place_id):g.val("")),b.data("scatter")&&(h.push("route"),a.each(e.address_components,function(a,b){b.types.filter(a=>h.includes(a)).length&&f.push(b.long_name)}),d.val(f.join(", ")))});d.on("input",function(){d.val()||c.find("input[data-coordinate]").val("")}),navigator.geolocation?h.on("click",function(a){navigator.geolocation.getCurrentPosition(function(a){"undefined"==typeof mapboxData?d.geocomplete("find",a.coords.latitude+" "+a.coords.longitude):(j.options.reverseGeocode=!0,j.options.limit=1,j.query(a.coords.latitude+","+a.coords.longitude),j.options.reverseGeocode=!1,j.options.limit=5)}),a.preventDefault()}):h.hide()}),b.find(hivepress.getSelector("map")).each(function(){var b=a(this),c=b.width(),d=b.data("max-zoom");if(b.is("[data-height]")&&(c=b.data("height")),b.height(c),"undefined"!=typeof mapboxData){mapboxgl.accessToken=mapboxData.apiKey;var e=new mapboxgl.LngLatBounds,f=new mapboxgl.Map({container:b.get(0),style:"mapbox://styles/mapbox/streets-v11",center:[0,0],zoom:1});f.addControl(new mapboxgl.NavigationControl),f.addControl(new mapboxgl.FullscreenControl),f.addControl(new MapboxLanguage),a.each(b.data("markers"),function(a,b){e.extend([b.longitude,b.latitude]);new mapboxgl.Marker().setLngLat([b.longitude,b.latitude]).setPopup(new mapboxgl.Popup().setHTML(b.content)).addTo(f)}),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0});var g=new ResizeObserver(function(){f.resize(),f.fitBounds(e,{maxZoom:d-1,padding:50,duration:0})}).observe(b.get(0))}else{var h=!1,i=[],e=new google.maps.LatLngBounds,f=new google.maps.Map(b.get(0),{zoom:3,minZoom:2,maxZoom:d,mapTypeControl:!1,streetViewControl:!1,center:{lat:0,lng:0},styles:[{featureType:"poi",stylers:[{visibility:"off"}]}]}),j=new OverlappingMarkerSpiderfier(f,{markersWontMove:!0,markersWontHide:!0,basicFormatEvents:!0}),k={path:google.maps.SymbolPath.CIRCLE,fillColor:"#3a77ff",fillOpacity:.25,strokeColor:"#3a77ff",strokeWeight:1,strokeOpacity:.75,scale:10};a.each(b.data("markers"),function(a,c){var d=new google.maps.InfoWindow({content:c.content}),g={title:c.title,position:{lat:c.latitude,lng:c.longitude}};b.data("scatter")&&(g.icon=k);var l=new google.maps.Marker(g);l.addListener("spider_click",function(){h&&h.close(),h=d,d.open(f,l)}),i.push(l),j.addMarker(l),e.extend(l.getPosition())}),f.fitBounds(e);var g=new ResizeObserver(function(){f.fitBounds(e)}).observe(b.get(0)),l=new MarkerClusterer(f,i,{imagePath:hivepressGeolocationData.assetURL+"/images/markerclustererplus/m",maxZoom:d-1});b.data("scatter")&&f.addListener("zoom_changed",function(){var b=Math.pow;k.scale=b(1.3125,f.getZoom()),a.each(i,function(a){i[a].setIcon(k)})})}})},a(document).on("hivepress:init",function(a,b){hivepress.initGeolocation(b)})})(jQuery); \ No newline at end of file diff --git a/hivepress-geolocation.php b/hivepress-geolocation.php index 3424491..fdb9bc2 100644 --- a/hivepress-geolocation.php +++ b/hivepress-geolocation.php @@ -2,7 +2,7 @@ /** * Plugin Name: HivePress Geolocation * Description: Allow users to search listings by location. - * Version: 1.3.6 + * Version: 1.3.7 * Author: HivePress * Author URI: https://hivepress.io/ * Text Domain: hivepress-geolocation diff --git a/includes/components/class-geolocation.php b/includes/components/class-geolocation.php index 19ee12b..b1c01ab 100644 --- a/includes/components/class-geolocation.php +++ b/includes/components/class-geolocation.php @@ -241,7 +241,6 @@ public function enqueue_scripts() { 'https://maps.googleapis.com/maps/api/js?' . http_build_query( [ 'libraries' => 'places', - 'callback' => 'hivepress.initGeolocation', 'key' => get_option( 'hp_gmaps_api_key' ), 'language' => hivepress()->translator->get_language(), 'region' => hivepress()->translator->get_region(), @@ -251,9 +250,6 @@ public function enqueue_scripts() { null, true ); - - wp_script_add_data( 'google-maps', 'async', true ); - wp_script_add_data( 'google-maps', 'defer', true ); } }