PageSourceSearch

https://wildmanbg.com/wp-content/themes/mywp/assets/js/maps.js?ver=7.1.12

js wildmanbg.com collected 2026-10-05 05:12:52 UTC 8,211 bytes, 291 lines download raw bytes

1var mapApp;
2( function( $ ) {
3	'use strict';
4	mapApp = {
5		z: 1,
6		view: false,
7		created: false,
8		interactive: false,
9		maps: {},
10		toggle: function( id ) {
11			if( ! this.view ) {
12				this.view = true;
13				$( '.map' ).removeClass( 'hide' );
14				$( '.map-key' ).removeClass( 'hide' );
15				$( '.map-view-button' ).text( 'Close Map' );
16				if( ! this.created ) {
17					this.interactive = true;
18					this.setup();
19				}
20				this.updateMarkers( id );
21			} else {
22				this.view = false;
23				$( '.map' ).addClass( 'hide' );
24				$( '.map-key' ).addClass( 'hide' );
25				$( '.map-view-button' ).text( 'View on Map' );
26			}
27			return false;
28		},
29		setup: function() {
30			this.view = true;
31			$( '.map' ).each( function() {
32				var id = $( this ).attr( 'id' );
33				mapApp.maps[id] = {
34					map: {},
35					markers: [],
36					drawings: []
37				}
38				mapApp.create( id );
39			} );
40			$( '.map-hover' ).on( 'mouseover.mapapp, mouseout.mapapp', function( e ) {
41				var id = $( this ).attr( 'data-map' );
42				var h = $( this ).attr( 'data-maphover' );
43				mapApp.mouseeffect( id, h, e.type );
44			} );
45		},
46		create: function( id ) {
47			var obj = $( '#' + id );
48			var markers = obj.find( '.marker' );
49			var draw = obj.find( '.map-draw' );
50			var args = mapApp.mapArgs();
51			this.created = true;
52			this.maps[id].map = new google.maps.Map( obj[0], args );
53			draw.each( function() {
54				mapApp.draw( id, $( this ) );
55			} );
56			markers.each( function() {
57				var mid = $( this ).attr( 'data-id' );
58				var label = $( this ).attr( 'data-label' );
59				var color = $( this ).attr( 'data-color' );
60				var colorover = $( this ).attr( 'data-colorover' );
61				mapApp.maps[id].markers['m' + mid] = {
62					lat: $( this ).attr( 'data-lat' ),
63					lng: $( this ).attr( 'data-lng' ),
64					html: $( this ).html()
65				};
66				mapApp.marker( id, mid, label, color, colorover );
67			} );
68			if( ! mapApp.interactive ) {
69				this.center( id );
70			}
71		},
72		draw: function( id, item ) {
73			var type = item.attr( 'data-type' );
74			var draw;
75			var drawing_html = item.html();
76			var drawing = JSON.parse( drawing_html );
77			switch( type ) {
78				case 'polyline' : {
79					var stroke = '#' + item.attr( 'data-stroke' );
80					this.drawingPoints( id, drawing );
81					draw = new google.maps.Polyline( {
82						path: drawing,
83						geodesic: true,
84						strokeColor: stroke,
85						strokeWeight: 3,
86						map: this.maps[id].map
87					} );
88					break;
89				}
90				case 'circle' : {
91					var color = '#' + item.attr( 'data-color' );
92					var center = { lat: drawing[0]['lat'], lng: drawing[0]['lng'] };
93					var radius = drawing[0]['radius'] * 1609.34;
94					draw = new google.maps.Circle( {
95						strokeColor: color,
96						strokeOpacity: 0.5,
97						strokeWeight: 2,
98						fillColor: color,
99						fillOpacity: 0.1, 
100						map: this.maps[id].map,
101						center: center,
102						radius: radius
103					} );
104					break;
105				}
106			}
107		},
108		drawingPoints: function( id, points ) {
109			var p, lat, lng;
110			for( var p = 0; p < points.length; p++ ) {
111				lat = points[p]['lat'];
112				lng = points[p]['lng'];
113				this.maps[id].drawings[this.maps[id].drawings.length] = [ lat, lng ];
114			}
115		},
116		marker: function( id, mid, label, color, colorover ) {
117			var info = this.maps[id].markers['m' + mid];
118			var latlng = new google.maps.LatLng( info.lat, info.lng );
119			var marker = new google.maps.Marker({
120				map: this.maps[id].map,
121				position: latlng,
122				icon: mapApp.geticon( color, label )
123			});
124			marker.setValues( {
125				id: id,
126				mid: mid,
127				text: label,
128				color: color,
129				colorover: colorover
130			} );
131			this.maps[id].markers.push( marker );
132			if( info.html ) {
133				var infowindow = new google.maps.InfoWindow( {
134					content: info.html
135				} );
136				google.maps.event.addListener( marker, 'click', function() {
137					var id = marker.get( 'id' );
138					infowindow.open( mapApp.maps[id].map, marker );
139				} );
140				google.maps.event.addListener( marker, 'mouseover', function() {
141					marker.setZIndex( google.maps.Marker.MAX_ZINDEX + mapApp.z++ );
142					marker.setIcon( mapApp.geticon( marker.get( 'colorover' ), marker.get( 'text' ) ) );
143				} );
144				google.maps.event.addListener( marker, 'mouseout', function() {
145					marker.setIcon( mapApp.geticon( marker.get( 'color' ), marker.get( 'text' ) ) );
146				} );
147			}
148			if( mid == 0 ) {
149				marker.setZIndex( google.maps.Marker.MAX_ZINDEX + mapApp.z++ );
150			}
151		},
152		updateMarkers: function( id ) {
153			if( mapApp.view ) {
154				var show = $.map( $( '.map-item.s' ), function( el ) { return Number( $( el ).attr( 'data-mapid' ) ); } );
155				var hide = $.map( $( '.map-item.h' ), function( el ) { return Number( $( el ).attr( 'data-mapid' ) ); } );
156				mapApp.displayMarkers( id, show, hide );
157			}
158		},
159		displayMarkers: function( id, s, h ) {
160			var i, n;
161			for( i = 0; i < s.length; i++ ) {
162				n = s[i] - 1;
163				this.toggleMarker( id, n, true );
164			}
165			for( i = 0; i < h.length; i++ ) {
166				n = h[i] - 1;
167				this.toggleMarker( id, n, false );
168			}
169			if( s.length ) {
170				this.center( id );
171			}
172		},
173		toggleMarker: function( id, i, s ) {
174			var m = this.maps[id].markers[i];
175			switch( s ) {
176				case true : {
177					if( ! m.visible ) {
178						m.setMap( this.maps[id].map );
179						m.visible = true;
180					}
181					break;
182				}
183				case false : {
184					if( m.visible ) {
185						m.setMap( null );
186						m.visible = false;
187					}
188					break;
189				}
190			}
191		},
192		center: function( id ) {
193			var bounds = new google.maps.LatLngBounds();
194			var z = 0;
195			$.each( this.maps[id].markers, function( i, marker ) {
196				if( marker.visible ) {
197					var latlng = new google.maps.LatLng( marker.position.lat(), marker.position.lng() );
198					bounds.extend( latlng );
199					z += 1;
200				}
201			} );
202			$.each( this.maps[id].drawings, function( i, point ) {
203				var latlng = new google.maps.LatLng( point[0], point[1] );
204				bounds.extend( latlng );
205				z += 1;
206			} );
207			if( z == 1 ) {
208				this.maps[id].map.setCenter( bounds.getCenter() );
209				this.maps[id].map.setZoom( 15 );
210			} else {
211				this.maps[id].map.fitBounds( bounds );
212			}
213		},
214		mouseeffect: function( id, p, c ) {
215			if( this.view ) {
216				google.maps.event.trigger( this.maps[id].markers[p], c );
217			}
218		},
219		geticon: function( c, id ) {
220			var url = this.svgmarker;
221			url[1] = c;
222			url[3] = id;
223			url = 'data:image/svg+xml;charset=UTF-8,' + url.join("");
224			return {
225				url: url,
226				size: new google.maps.Size(24, 30),
227				scaledSize: new google.maps.Size(24, 30),
228				anchor: new google.maps.Point(12, 30)
229			};
230		},
231		mapArgs: function() {
232			var args = {
233				zoom: 13,
234				center: new google.maps.LatLng( 0, 0 ),
235				mapTypeId: 'terrain',
236				styles: [
237					{
238						"elementType": "labels",
239						"stylers": [
240							{
241								"visibility": "off"
242							}
243						]
244					},
245					{
246						"featureType": "administrative",
247						"elementType": "geometry",
248						"stylers": [
249							{
250								"visibility": "off"
251							}
252						]
253					},
254					{
255						"featureType": "administrative.locality",
256						"stylers": [
257							{
258								"visibility": "simplified"
259							}
260						]
261					},
262					{
263						"featureType": "road.highway",
264						"elementType": "labels.icon",
265						"stylers": [
266							{
267								"visibility": "simplified"
268							}
269						]
270					},
271					{
272						"featureType": "transit",
273						"stylers": [
274							{
275								"visibility": "off"
276							}
277						]
278					}
279				]
280			};
281			return args;
282		},
283		svgmarker: [
284			"%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 24 30' xml:space='preserve'%3E%3Cstyle type='text/css'%3E.m%7Bfill:%23",
285			"",
286			";%7D.t%7Bfill:%23fff;font-family:'Arial';font-weight:bold;font-size:12px;%7D%3C/style%3E%3Cpath class='m' d='M24,12c0,6.6-12,18-12,18S0,18.6,0,12C0,5.4,5.4,0,12,0S24,5.4,24,12z'/%3E%3Ctext transform='matrix(1 0 0 1 12 16)' text-anchor='middle' class='t'%3E",
287			"",
288			"%3C/text%3E%3C/svg%3E"
289		]
290	};
291} )(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.