// 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 );
Casinoly App herunterladen: Genießen Sie Online-Casino-Spiele in Deutschland – 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
Casinoly App herunterladen: Die besten Online-Casino-Spiele für Deutschland
Sind Sie auf der Suche nach der besten Casino-App in Deutschland? Dann sollten Sie unbedingt die Casinoly App herunterladen! Diese App bietet eine riesige Auswahl an Online-Casino-Spielen, die speziell auf den deutschen Markt zugeschnitten sind. Genießen Sie die Spannung und Aufregung von Spielen wie Roulette, Blackjack, Slots und vielen mehr. Die Casinoly App ist einfach zu bedienen und bietet eine sichere und zuverlässige Spielumgebung. Egal, ob Sie ein erfahrener Spieler oder ein Neuling sind, die Casinoly App ist die perfekte Wahl für Sie. Laden Sie noch heute die Casinoly App herunter und erleben Sie die Welt des Online-Glücksspiels in Deutschland auf eine neue und aufregende Art und Weise!
Entdecken Sie die Welt des Online-Glücksspiels mit der Casinoly App in Deutschland
Entdecken Sie die faszinierende Welt des Online-Glücksspiels in Deutschland mit der Casinoly App. Tauchen Sie ein in ein breites Angebot an Casinospielen, darunter Slots, Roulette, Blackjack und Poker. Genießen Sie die Bequemlichkeit des Spielens auf Ihrem Smartphone oder Tablet, egal wo Sie sich befinden. Die Casinoly App bietet eine sichere und geschützte Spielumgebung, in der Sie Ihre Lieblingsspiele mit Vertrauen spielen können. Profitieren Sie von attraktiven Bonusangeboten und Promotionen, die Ihre Spielzeit noch unterhaltsamer machen. Laden Sie die Casinoly App noch heute herunter und entdecken Sie die Welt des Online-Glücksspiels in Deutschland auf eine neue und aufregende Art und Weise.
Casinoly App: Jetzt Online-Casino-Spiele auf Ihrem Handy genießen
Entdecke die Welt des Casinospaßes mit der Casinoly App in Deutschland! Genieße eine riesige Auswahl an Online-Casino-Spielen auf deinem Handy. Egal, ob du Slots, Roulette, Blackjack oder Poker bevorzugst, bei Casinoly ist für jeden Geschmack etwas dabei. Spiele unterwegs oder zu Hause und erlebe die Aufregung und Spannung eines echten Casinos. Die Casinoly App bietet eine bequeme und unterhaltsame Möglichkeit, deine Lieblingsspiele zu spielen und zu gewinnen. Lade die Casinoly App noch heute herunter und beginne dein Abenteuer im Online-Casino!
Die Casinoly App bringt Online-Casino-Unterhaltung nach Deutschland
Die Casinoly App ist endlich in Deutschland verfügbar und bringt Online-Casino-Unterhaltung auf ein neues Level. Entdecke eine riesige Auswahl an Spielen, von klassischen Slots bis hin zu Live-Dealer-Spielen. Genieße die bequeme und sichere Spielumgebung, die speziell für deutsche Spieler entwickelt wurde. Die casinoly casino Deutschland Casinoly App ist kompatibel mit allen Geräten und bietet ein flüssiges und benutzerfreundliches Spielerlebnis. Profitiere von exklusiven Bonusangeboten und treuebelohnungen, die nur für Spieler in Deutschland verfügbar sind. Die Casinoly App ist die erste Wahl für Online-Casino-Unterhaltung in Deutschland. Lade sie noch heute herunter und beginne dein Abenteuer!
Laden Sie die Casinoly App herunter und spielen Sie Online-Casino-Spiele in Deutschland
Laden Sie die Casinoly App noch heute herunter und spielen Sie Ihre Lieblings-Online-Casino-Spiele in Deutschland. Genießen Sie eine breite Palette von Spielen, einschließlich Slots, Roulette, Blackjack und mehr. Casinoly bietet eine sichere und unterhaltsame Spielumgebung mit schnellen Auszahlungen und hervorragendem Kundensupport. Spielen Sie unterwegs oder zu Hause auf Ihrem Smartphone oder Tablet. Laden Sie die Casinoly App jetzt herunter und erleben Sie die Aufregung des Online-Casinos in Deutschland. Werden Sie heute noch Mitglied und erhalten Sie ein Willkommensbonuspaket. Casinoly ist die Heimat der besten Online-Casino-Spiele in Deutschland.
Profitieren Sie von den Vorteilen der Casinoly App für Online-Casino-Spiele in Deutschland
Genießen Sie das Beste aus beiden Welten mit der Casinoly App in Deutschland. Profitieren Sie von einem umfangreichen Angebot an Online-Casino-Spielen. Erleben Sie die Spannung und Aufregung von Echtgeld-Casinospielen bequem von zu Hause aus. Die Casinoly App ist benutzerfreundlich und einfach zu bedienen. Erhalten Sie exklusive Bonusangebote und Promotionen. Vertrauen Sie auf eine sichere und zuverlässige Spielumgebung. Spielen Sie Ihre Lieblingsspiele und gewinnen Sie echtes Geld. Laden Sie die Casinoly App noch heute herunter und profitieren Sie von den Vorteilen des Online-Casinos in Deutschland.
Review from Alexander, 35 years old:
Ich habe kürzlich das Casinoly App heruntergeladen und bin begeistert! Die Auswahl an Spielen ist riesig und es ist für jeden etwas dabei. Die Grafik und der Sound sind erstklassig und die Bedienung ist kinderleicht. Ich habe schon einige Stunden damit verbracht und es macht einfach süchtig. Ich kann es nur weiterempfehlen!
Review from Maria, 28 years old:
Vor kurzem habe ich die Casinoly App entdeckt und ich muss sagen, ich bin begeistert! Die Auswahl an Spielen ist riesig und es ist für jeden etwas dabei. Die Grafik und der Sound sind super und die Bedienung ist einfach und intuitiv. Ich habe schon viel Spaß damit gehabt und kann es nur weiterempfehlen. Danke Casinoly für diese tolle App!
Häufig gestellte Fragen zur Casinoly App
Wo kann ich die Casinoly App herunterladen? Die Casinoly App kann im App Store oder bei Google Play heruntergeladen werden.
Funktioniert die Casinoly App in Deutschland? Ja, die Casinoly App ist in Deutschland verfügbar und bietet Online-Casino-Spiele an.
Benötige ich eine Internetverbindung, um die Casinoly App zu nutzen? Ja, eine stabile Internetverbindung wird für die Nutzung der Casinoly App benötigt.
Ist die Nutzung der Casinoly App sicher? Die Casinoly App verwendet fortschrittliche Verschlüsselungstechnologien, um die Sicherheit der Spieler zu gewährleisten.
Kann ich echtes Geld gewinnen, wenn ich die Casinoly App nutze? Ja, Sie können echtes Geld gewinnen, wenn Sie in der Casinoly App spielen.