// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); orchid – Page 465 – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Unlock Exciting Gaming with StayCasino No Deposit Bonus Codes – Play Top Online Casinos in English, Australia!

Unlock Exciting Gaming with StayCasino No Deposit Bonus Codes – Play Top Online Casinos in English, Australia! Table Of Contents Unlock Endless Gaming Fun with StayCasino No Deposit Bonus Codes in Australian Online Casinos Experience the Thrill of Top Online Casinos in English with StayCasino No Deposit Bonuses Play Your Favorite Online Casino Games in […]

Stay Active in Casino Games with No Deposit Bonus Codes – Play Top Online Casinos in English, Australia

Stay Active in Casino Games with No Deposit Bonus Codes – Play Top Online Casinos in English, Australia Table Maximizing Your Gaming Experience: How to Stay Active in Online Casinos with No Deposit Bonus Codes Top No Deposit Bonus Codes for Australian Online Casinos: Stay Active and Play Now Staying Engaged in Online Casino Games: […]

Dmaa 60 Mg: Wirkung, Vorteile und Einnahmeempfehlungen

Dmaa 60 Mg gehört zu den beliebten Nahrungsergänzungsmitteln im Fitnessbereich. Es ist bekannt für seine leistungssteigernden Effekte und wird vor allem von Sportlern eingesetzt, die ihre Trainingseinheiten optimieren möchten. In diesem Artikel erfahren Sie mehr über die Wirkungsweise von Dmaa, die damit verbundenen Vorteile und wichtige Aspekte der Einnahme. Um den genauen Dmaa 60 Mg […]

«Начните играть в онлайн-казино Pinco Casino сегодня!»

«Начните играть в онлайн-казино Pinco Casino сегодня!» Contents «Начните играть в захватывающие онлайн-игры казино Pinco сегодня!» «Как начать играть в онлайн-казино Pinco Casino» «Преимущества игры в онлайн-казино Pinco Casino» «Почему вы должны выбрать Pinco Casino для онлайн-игр сегодня» «Начните играть в захватывающие онлайн-игры казино Pinco сегодня!» Вы ищете новые и захватывающие онлайн-игры казино в Казахстане? […]

Ciamed 5 Tadalafil Testépítés: Használati Útmutató

Bevezetés A testépítés világában sok különböző szert használnak a teljesítmény növelésére és az izomtömeg fejlesztésére. Az egyik legismertebb anyag, amit sok sportoló választ, a Tadalafil, különösen a Ciamed által gyártott változat. Ebben a cikkben részletesen megvizsgáljuk a Ciamed 5 Tadalafil hatásait, alkalmazását és a testépítésben történő felhasználását. Mi a Tadalafil? A Tadalafil egy PDE5-gátló, amelyet […]

Casibom Güvenilir Giriş: Çevrimiçi Kumarhane Oyunlarına Katılın!

Casibom Güvenilir Giriş: Çevrimiçi Kumarhane Oyunlarına Katılın! Contents Casibom Güvenilir Giriş: Nasıl Olur? Çevrimiçi Kumarhane Oyunlarına Katılın: Casibom’da Giriş Yapın! Casibom’da Güvenli Bir Şekilde Giriş Yapın! Casibom Giriş Bilgilerinizi Güvenli Bir Şekilde Koruyun! Casibom’da Güvenilir Bir Şekilde Oynamak İçin Giriş Yapın! Sorularınızı Casibom Güvenilir Giriş Çevrimiçi Kumarhane Oyunlarına Katılım İçin Sorunuz! Casibom Güvenilir Giriş: Nasıl […]

Juega al emocionante juego de casino Avia Masters y domina la emoción en línea – Casino en español para Chile

Juega al emocionante juego de casino Avia Masters y domina la emoción en línea – Casino en español para Chile Table Of Contents Descubre el emocionante juego de casino Avia Masters: todo lo que necesitas saber Aprende a dominar la emoción de Avia Masters en línea: guía para jugadores de casino en Chile Avia Masters: […]

Вход в онлайн-казино Пинко Букмекерская Контора: Играйте в лучшие игровые автоматы в Кыргызстане

Вход в онлайн-казино Пинко Букмекерская Контора: Играйте в лучшие игровые автоматы в Кыргызстане Table Как начать играть в онлайн-казино Пинко Букмекерская Контора в Кыргызстане Онлайн-казино Пинко Букмекерская Контора: Выгодные бонусы для игроков из Кыргызстана Как скачать и установить мобильное приложение Пинко Букмекерская Контора для онлайн-казино Часто задаваемые вопросы о входе в онлайн-казино «Пинко Букмекерская Контора»: […]

Отзывы о Pinco казино: как играть в онлайн-казино в Кыргызстане?

Отзывы о Pinco казино: как играть в онлайн-казино в Кыргызстане? Table of contents Первые шаги в онлайн-казино Pinco: наш опыт Как начать играть в онлайн-казино Pinco в Кыргызстане Особенности игрового процесса в Pinco казино Что нужно знать о онлайн-казино Pinco до начала игры Наш обзор онлайн-казино Pinco: плюсы и минусы Первые шаги в онлайн-казино Pinco: […]

Pinco UZ Online Kasino: O’yingiz mumkin!»

Pinco UZ Online Kasino: O’yingiz mumkin!» Table Of Contents 4 usul Pinco UZ Online Kasino davom etishga qiziqish! Pinco UZ Online Kasino: O’zingizni sevimli slotlar sonini toping! Bizning yangi jangbazlar jadiqiningiz mumkin: Pinco UZ Online Kasino! Pinco UZ Online Kasino – sizni qozg’aydigan bonuslar va promosylar! 4 usul Pinco UZ Online Kasino davom etishga qiziqish! […]

Design and Develop by Ovatheme