summaryrefslogtreecommitdiff
path: root/www/wiki/extensions/Maps/resources/GoogleMaps/googlemaps3ajax.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/wiki/extensions/Maps/resources/GoogleMaps/googlemaps3ajax.js')
-rw-r--r--www/wiki/extensions/Maps/resources/GoogleMaps/googlemaps3ajax.js48
1 files changed, 48 insertions, 0 deletions
diff --git a/www/wiki/extensions/Maps/resources/GoogleMaps/googlemaps3ajax.js b/www/wiki/extensions/Maps/resources/GoogleMaps/googlemaps3ajax.js
new file mode 100644
index 00000000..aa86319e
--- /dev/null
+++ b/www/wiki/extensions/Maps/resources/GoogleMaps/googlemaps3ajax.js
@@ -0,0 +1,48 @@
+/**
+ * JavaScript for Google Maps v3 maps in the Semantic Maps extension.
+ * @see https://www.mediawiki.org/wiki/Extension:Semantic_Maps
+ *
+ * @licence GNU GPL v2+
+ * @author Peter Grassberger < petertheone@gmail.com >
+ */
+
+
+(function( $, sm ) {
+ var ajaxRequest = null;
+ var mapEvents = ['dragend', 'zoom_changed'];
+
+ $( document ).ready( function() {
+ // todo: find a way to remove setTimeout.
+ setTimeout( function() {
+ if( typeof google === 'undefined' ) {
+ return;
+ }
+ $( window.mapsGoogleList ).each( function( index, map ) {
+ if( !map.options.ajaxquery || !map.options.ajaxcoordproperty ) {
+ return;
+ }
+ $( mapEvents ).each( function( index, event ) {
+ google.maps.event.addListener( map.map, event, function() {
+ var bounds = map.map.getBounds();
+ var query = sm.buildQueryString(
+ decodeURIComponent( map.options.ajaxquery.replace( /\+/g, ' ' ) ),
+ map.options.ajaxcoordproperty,
+ bounds.getNorthEast().lat(),
+ bounds.getNorthEast().lng(),
+ bounds.getSouthWest().lat(),
+ bounds.getSouthWest().lng()
+ );
+
+ if( ajaxRequest !== null ) {
+ ajaxRequest.abort();
+ }
+ ajaxRequest = sm.ajaxUpdateMarker( map, query, map.options.icon ).done( function() {
+ map.createMarkerCluster();
+ ajaxRequest = null;
+ } );
+ } );
+ } );
+ } );
+ }, 500 );
+ } );
+})( window.jQuery, window.sm );