forked from GNUsocial/gnu-social
		
	
		
			
	
	
		
			444 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			444 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								mxn.register('googlev3', {	
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Mapstraction: {
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									init: function(element, api){		
							 | 
						||
| 
								 | 
							
									    var me = this;         
							 | 
						||
| 
								 | 
							
								            if ( google && google.maps ){
							 | 
						||
| 
								 | 
							
								                // by default no controls and road map
							 | 
						||
| 
								 | 
							
								                var myOptions = {
							 | 
						||
| 
								 | 
							
										    		disableDefaultUI: true,
							 | 
						||
| 
								 | 
							
								                    mapTypeId: google.maps.MapTypeId.ROADMAP
							 | 
						||
| 
								 | 
							
								                };
							 | 
						||
| 
								 | 
							
								                var map = new google.maps.Map(element, myOptions);
							 | 
						||
| 
								 | 
							
								                
							 | 
						||
| 
								 | 
							
								                // deal with click
							 | 
						||
| 
								 | 
							
								                google.maps.event.addListener(map, 'click', function(location){
							 | 
						||
| 
								 | 
							
												me.clickHandler(location.latLng.lat(),location.latLng.lng(),location,me);
							 | 
						||
| 
								 | 
							
								                });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                // deal with zoom change
							 | 
						||
| 
								 | 
							
								                google.maps.event.addListener(map, 'zoom_changed', function(){
							 | 
						||
| 
								 | 
							
								                    me.changeZoom.fire();
							 | 
						||
| 
								 | 
							
										});
							 | 
						||
| 
								 | 
							
								                // deal with map movement
							 | 
						||
| 
								 | 
							
										google.maps.event.addListener(map, 'dragend', function(){
							 | 
						||
| 
								 | 
							
								                    me.moveendHandler(me);
							 | 
						||
| 
								 | 
							
								                    me.endPan.fire();
							 | 
						||
| 
								 | 
							
										});
							 | 
						||
| 
								 | 
							
								                this.maps[api] = map;
							 | 
						||
| 
								 | 
							
								                this.loaded[api] = true;
							 | 
						||
| 
								 | 
							
								                me.load.fire();
							 | 
						||
| 
								 | 
							
									    }
							 | 
						||
| 
								 | 
							
								            else {
							 | 
						||
| 
								 | 
							
								                alert(api + ' map script not imported');
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									applyOptions: function(){
							 | 
						||
| 
								 | 
							
									    var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
									    var myOptions = [];
							 | 
						||
| 
								 | 
							
								            if (this.options.enableDragging) {
							 | 
						||
| 
								 | 
							
										myOptions.draggable = true;
							 | 
						||
| 
								 | 
							
								            } 
							 | 
						||
| 
								 | 
							
								            if (this.options.enableScrollWheelZoom){
							 | 
						||
| 
								 | 
							
										myOptions.scrollwheel = true;
							 | 
						||
| 
								 | 
							
								            } 
							 | 
						||
| 
								 | 
							
									    map.setOptions(myOptions);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									resizeTo: function(width, height){	
							 | 
						||
| 
								 | 
							
								            this.currentElement.style.width = width;
							 | 
						||
| 
								 | 
							
								            this.currentElement.style.height = height;
							 | 
						||
| 
								 | 
							
								            var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								            google.maps.event.trigger(map,'resize');
							 | 
						||
| 
								 | 
							
								  	},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addControls: function( args ) {
							 | 
						||
| 
								 | 
							
									    var map = this.maps[this.api];	
							 | 
						||
| 
								 | 
							
								            // remove old controls
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            // Google has a combined zoom and pan control.
							 | 
						||
| 
								 | 
							
								            if (args.zoom || args.pan) {
							 | 
						||
| 
								 | 
							
								                if (args.zoom == 'large'){ 
							 | 
						||
| 
								 | 
							
								                    this.addLargeControls();
							 | 
						||
| 
								 | 
							
								                } else { 
							 | 
						||
| 
								 | 
							
								                    this.addSmallControls();
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            if (args.scale){
							 | 
						||
| 
								 | 
							
								                var myOptions = {
							 | 
						||
| 
								 | 
							
								                    scaleControl:true,
							 | 
						||
| 
								 | 
							
										    scaleControlOptions: {style:google.maps.ScaleControlStyle.DEFAULT}                
							 | 
						||
| 
								 | 
							
								                };
							 | 
						||
| 
								 | 
							
								                map.setOptions(myOptions);
							 | 
						||
| 
								 | 
							
								                this.addControlsArgs.scale = true;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addSmallControls: function() {
							 | 
						||
| 
								 | 
							
								            var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								            var myOptions = {
							 | 
						||
| 
								 | 
							
								            	navigationControl: true,
							 | 
						||
| 
								 | 
							
								            	navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								            map.setOptions(myOptions);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								            this.addControlsArgs.pan = false;
							 | 
						||
| 
								 | 
							
								            this.addControlsArgs.scale = false;                        
							 | 
						||
| 
								 | 
							
								            this.addControlsArgs.zoom = 'small';
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addLargeControls: function() {
							 | 
						||
| 
								 | 
							
									    var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								            var myOptions = {
							 | 
						||
| 
								 | 
							
								                navigationControl:true,
							 | 
						||
| 
								 | 
							
										navigationControlOptions: {style:google.maps.NavigationControlStyle.DEFAULT}
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								            map.setOptions(myOptions);
							 | 
						||
| 
								 | 
							
								            this.addControlsArgs.pan = true;
							 | 
						||
| 
								 | 
							
								            this.addControlsArgs.zoom = 'large';
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addMapTypeControls: function() {
							 | 
						||
| 
								 | 
							
									    var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								            var myOptions = {
							 | 
						||
| 
								 | 
							
								                mapTypeControl: true,
							 | 
						||
| 
								 | 
							
								                mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DEFAULT}
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								            map.setOptions(myOptions);
							 | 
						||
| 
								 | 
							
									    this.addControlsArgs.map_type = true;
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setCenterAndZoom: function(point, zoom) { 
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										var pt = point.toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										map.setCenter(pt);
							 | 
						||
| 
								 | 
							
								                map.setZoom(zoom);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									addMarker: function(marker, old) {
							 | 
						||
| 
								 | 
							
									       return marker.toProprietary(this.api);		
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									removeMarker: function(marker) {
							 | 
						||
| 
								 | 
							
								                // doesn't really remove them, just hides them
							 | 
						||
| 
								 | 
							
								                marker.hide();
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									removeAllMarkers: function() {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];		
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									declutterMarkers: function(opts) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addPolyline: function(polyline, old) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										return polyline.toProprietary(this.api);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									removePolyline: function(polyline) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];		
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								       
							 | 
						||
| 
								 | 
							
									getCenter: function() {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								                var pt = map.getCenter();
							 | 
						||
| 
								 | 
							
								                return new mxn.LatLonPoint(pt.lat(),pt.lng());
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setCenter: function(point, options) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										var pt = point.toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										if(options && options.pan) { 
							 | 
						||
| 
								 | 
							
								                    map.panTo(pt);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										else { 
							 | 
						||
| 
								 | 
							
								                    map.setCenter(pt);
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setZoom: function(zoom) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										map.setZoom(zoom);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									getZoom: function() {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										return map.getZoom();
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									getZoomLevelForBoundingBox: function( bbox ) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										var sw = bbox.getSouthWest().toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										var ne = bbox.getNorthEast().toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										var gLatLngBounds = new google.maps.LatLngBounds(sw, ne);
							 | 
						||
| 
								 | 
							
										map.fitBounds(gLatLngBounds);
							 | 
						||
| 
								 | 
							
								                return map.getZoom();
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setMapType: function(type) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										switch(type) {
							 | 
						||
| 
								 | 
							
											case mxn.Mapstraction.ROAD:
							 | 
						||
| 
								 | 
							
								                            map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
							 | 
						||
| 
								 | 
							
											    break;
							 | 
						||
| 
								 | 
							
											case mxn.Mapstraction.SATELLITE:
							 | 
						||
| 
								 | 
							
								                            map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
							 | 
						||
| 
								 | 
							
											    break;
							 | 
						||
| 
								 | 
							
											case mxn.Mapstraction.HYBRID:
							 | 
						||
| 
								 | 
							
								                            map.setMapTypeId(google.maps.MapTypeId.HYBRID);
							 | 
						||
| 
								 | 
							
											    break;
							 | 
						||
| 
								 | 
							
											default:
							 | 
						||
| 
								 | 
							
								                            map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
							 | 
						||
| 
								 | 
							
										}	 
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									getMapType: function() {
							 | 
						||
| 
								 | 
							
								            var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								            var type = map.getMapTypeId();
							 | 
						||
| 
								 | 
							
								                switch(type) {
							 | 
						||
| 
								 | 
							
								                        case google.maps.MapTypeId.ROADMAP:
							 | 
						||
| 
								 | 
							
								                                return mxn.Mapstraction.ROAD;
							 | 
						||
| 
								 | 
							
								                        case google.maps.MapTypeId.SATELLITE:
							 | 
						||
| 
								 | 
							
								                                return mxn.Mapstraction.SATELLITE;
							 | 
						||
| 
								 | 
							
								                        case google.maps.MapTypeId.HYBRID:
							 | 
						||
| 
								 | 
							
								                                return mxn.Mapstraction.HYBRID;
							 | 
						||
| 
								 | 
							
								                        //case google.maps.MapTypeId.TERRAIN:
							 | 
						||
| 
								 | 
							
								                        //        return something;
							 | 
						||
| 
								 | 
							
								                        default:
							 | 
						||
| 
								 | 
							
								                                return null;
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									getBounds: function () {
							 | 
						||
| 
								 | 
							
									    var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
									    var gLatLngBounds = map.getBounds();	
							 | 
						||
| 
								 | 
							
								            var sw = gLatLngBounds.getSouthWest();
							 | 
						||
| 
								 | 
							
								            var ne = gLatLngBounds.getNorthEast();
							 | 
						||
| 
								 | 
							
								            return new mxn.BoundingBox(sw.lat(), sw.lng(), ne.lat(), ne.lng());
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setBounds: function(bounds){
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										var sw = bounds.getSouthWest().toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										var ne = bounds.getNorthEast().toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										var gLatLngBounds = new google.maps.LatLngBounds(sw, ne);
							 | 
						||
| 
								 | 
							
										map.fitBounds(gLatLngBounds);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addImageOverlay: function(id, src, opacity, west, south, east, north, oContext) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									setImagePosition: function(id, oContext) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										var topLeftPoint; var bottomRightPoint;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										//oContext.pixels.top = ...;
							 | 
						||
| 
								 | 
							
										//oContext.pixels.left = ...;
							 | 
						||
| 
								 | 
							
										//oContext.pixels.bottom = ...;
							 | 
						||
| 
								 | 
							
										//oContext.pixels.right = ...;
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									addOverlay: function(url, autoCenterAndZoom) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									addTileLayer: function(tile_url, opacity, copyright_text, min_zoom, max_zoom, map_type) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									toggleTileLayer: function(tile_url) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									getPixelRatio: function() {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code	
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									mousePosition: function(element) {
							 | 
						||
| 
								 | 
							
										var map = this.maps[this.api];
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code	
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								LatLonPoint: {
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									toProprietary: function() {
							 | 
						||
| 
								 | 
							
								            return new google.maps.LatLng(this.lat, this.lon);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fromProprietary: function(googlePoint) {
							 | 
						||
| 
								 | 
							
										this.lat = googlePoint.lat();
							 | 
						||
| 
								 | 
							
										this.lon = googlePoint.lng();
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Marker: {
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									toProprietary: function() {
							 | 
						||
| 
								 | 
							
										var options = {};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                // do we have an Anchor?
							 | 
						||
| 
								 | 
							
								                var ax = 0;  // anchor x 
							 | 
						||
| 
								 | 
							
										var ay = 0;  // anchor y
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (this.iconAnchor) {
							 | 
						||
| 
								 | 
							
								                    ax = this.iconAnchor[0];
							 | 
						||
| 
								 | 
							
								                    ay = this.iconAnchor[1];
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								                var gAnchorPoint = new google.maps.Point(ax,ay);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (this.iconUrl) {
							 | 
						||
| 
								 | 
							
								 		    options.icon = new google.maps.MarkerImage(
							 | 
						||
| 
								 | 
							
											this.iconUrl,
							 | 
						||
| 
								 | 
							
								                        new google.maps.Size(this.iconSize[0],
							 | 
						||
| 
								 | 
							
													     this.iconSize[1]),
							 | 
						||
| 
								 | 
							
								                        new google.maps.Point(0,0),
							 | 
						||
| 
								 | 
							
								                        gAnchorPoint
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    // do we have a Shadow?
							 | 
						||
| 
								 | 
							
										    if (this.iconShadowUrl) {
							 | 
						||
| 
								 | 
							
								  			if (this.iconShadowSize) {
							 | 
						||
| 
								 | 
							
								                            var x = this.iconShadowSize[0];
							 | 
						||
| 
								 | 
							
								                            var y = this.iconShadowSize[1];
							 | 
						||
| 
								 | 
							
								  			    options.shadow = new google.maps.MarkerImage(
							 | 
						||
| 
								 | 
							
												this.iconShadowUrl,
							 | 
						||
| 
								 | 
							
								                                new google.maps.Size(x,y),
							 | 
						||
| 
								 | 
							
								                                new google.maps.Point(0,0),
							 | 
						||
| 
								 | 
							
								                                gAnchorPoint 
							 | 
						||
| 
								 | 
							
											    );
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
								                        else {
							 | 
						||
| 
								 | 
							
								  			    options.shadow = new google.maps.MarkerImage(this.iconShadowUrl);
							 | 
						||
| 
								 | 
							
											}
							 | 
						||
| 
								 | 
							
										    }
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (this.draggable){
							 | 
						||
| 
								 | 
							
										    options.draggable = this.draggable;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (this.labelText){
							 | 
						||
| 
								 | 
							
										    options.title =  this.labelText;
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
										if (this.imageMap){
							 | 
						||
| 
								 | 
							
								                    options.shape = {
							 | 
						||
| 
								 | 
							
								                        coord: this.imageMap,
							 | 
						||
| 
								 | 
							
								                        type: 'poly'
							 | 
						||
| 
								 | 
							
										    };
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										options.position = this.location.toProprietary(this.api);
							 | 
						||
| 
								 | 
							
										options.map = this.map;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										var marker = new google.maps.Marker(options);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										if (this.infoBubble){
							 | 
						||
| 
								 | 
							
										    var infowindow = new google.maps.InfoWindow({
							 | 
						||
| 
								 | 
							
								        	        content: this.infoBubble
							 | 
						||
| 
								 | 
							
										    });
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                    var event_action = "click";
							 | 
						||
| 
								 | 
							
										    if (this.hover) {
							 | 
						||
| 
								 | 
							
										        event_action = "mouseover";
							 | 
						||
| 
								 | 
							
										    }
							 | 
						||
| 
								 | 
							
										    google.maps.event.addListener(marker, event_action, function() { infowindow.open(this.map,marker); });
							 | 
						||
| 
								 | 
							
										}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								                if (this.hoverIconUrl){
							 | 
						||
| 
								 | 
							
								                    var gSize = new google.maps.Size(this.iconSize[0],
							 | 
						||
| 
								 | 
							
											                            this.iconSize[1]);
							 | 
						||
| 
								 | 
							
								                    var zerozero = new google.maps.Point(0,0);
							 | 
						||
| 
								 | 
							
								 		    var hIcon = new google.maps.MarkerImage(
							 | 
						||
| 
								 | 
							
											this.hoverIconUrl,
							 | 
						||
| 
								 | 
							
								                        gSize,
							 | 
						||
| 
								 | 
							
								                        zerozero,
							 | 
						||
| 
								 | 
							
								                        gAnchorPoint
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								 		    var Icon = new google.maps.MarkerImage(
							 | 
						||
| 
								 | 
							
											this.iconUrl,
							 | 
						||
| 
								 | 
							
											gSize,
							 | 
						||
| 
								 | 
							
								                        zerozero,
							 | 
						||
| 
								 | 
							
								                        gAnchorPoint
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								                    google.maps.event.addListener(
							 | 
						||
| 
								 | 
							
								                        marker, 
							 | 
						||
| 
								 | 
							
								                        "mouseover", 
							 | 
						||
| 
								 | 
							
								                        function(){ 
							 | 
						||
| 
								 | 
							
								                            marker.setIcon(hIcon); 
							 | 
						||
| 
								 | 
							
								                        }
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								                    google.maps.event.addListener(
							 | 
						||
| 
								 | 
							
								                        marker, 
							 | 
						||
| 
								 | 
							
								                        "mouseout", 
							 | 
						||
| 
								 | 
							
								                        function(){ marker.setIcon(Icon); }
							 | 
						||
| 
								 | 
							
								                    );
							 | 
						||
| 
								 | 
							
								                }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
										google.maps.event.addListener(marker, 'click', function() {
							 | 
						||
| 
								 | 
							
											marker.mapstraction_marker.click.fire();
							 | 
						||
| 
								 | 
							
										});
							 | 
						||
| 
								 | 
							
										
							 | 
						||
| 
								 | 
							
										return marker;
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									openBubble: function() {
							 | 
						||
| 
								 | 
							
										var infowindow = new google.maps.InfoWindow({
							 | 
						||
| 
								 | 
							
								       		content: this.infoBubble
							 | 
						||
| 
								 | 
							
									    });
							 | 
						||
| 
								 | 
							
									    infowindow.open(this.map,this.proprietary_marker);
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									hide: function() {
							 | 
						||
| 
								 | 
							
									    this.proprietary_marker.setOptions({visible:false});
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									show: function() {
							 | 
						||
| 
								 | 
							
									    this.proprietary_marker.setOptions({visible:true});
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									update: function() {
							 | 
						||
| 
								 | 
							
										// TODO: Add provider code
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Polyline: {
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									toProprietary: function() {
							 | 
						||
| 
								 | 
							
								            throw 'Not implemented';
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
									show: function() {
							 | 
						||
| 
								 | 
							
								            throw 'Not implemented';
							 | 
						||
| 
								 | 
							
									},
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									hide: function() {
							 | 
						||
| 
								 | 
							
								            throw 'Not implemented';
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
									
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								});
							 |