/* ### jQuery Google Maps Plugin v1.01 ### * Home: http://www.mayzes.org/googlemaps.jquery.html * Code: http://www.mayzes.org/js/jquery.googlemaps1.01.js * Date: 2010-01-14 (Thursday, 14 Jan 2010) * * Dual licensed under the MIT and GPL licenses. * http://www.gnu.org/licenses/gpl.html * http://www.opensource.org/licenses/mit-license.php ### */ jQuery.fn.googleMaps = function(options) { if (!window.GBrowserIsCompatible || !GBrowserIsCompatible()) { return this; } // Fill default values where not set by instantiation code var opts = $.extend({}, $.googleMaps.defaults, options); //$.fn.googleMaps.includeGoogle(opts.key, opts.sensor); return this.each(function() { // Create Map $.googleMaps.gMap = new GMap2(this, opts); $.googleMaps.mapsConfiguration(opts); }); }; $.googleMaps = { mapsConfiguration: function(opts) { // GEOCODE if ( opts.geocode ) { geocoder = new GClientGeocoder(); geocoder.getLatLng(opts.geocode, function(center) { if (!center) { alert(address + " not found"); } else { $.googleMaps.gMap.setCenter(center, opts.depth); $.googleMaps.latitude = center.x; $.googleMaps.longitude = center.y; } }); } else { // Latitude & Longitude Center Point var center = $.googleMaps.mapLatLong(opts.latitude, opts.longitude); // Set the center of the Map with the new Center Point and Depth $.googleMaps.gMap.setCenter(center, opts.depth); } // POLYLINE if ( opts.polyline ) // Draw a PolyLine on the Map $.googleMaps.gMap.addOverlay($.googleMaps.mapPolyLine(opts.polyline)); // GEODESIC if ( opts.geodesic ) { $.googleMaps.mapGeoDesic(opts.geodesic); } // PAN if ( opts.pan ) { // Set Default Options opts.pan = $.googleMaps.mapPanOptions(opts.pan); // Pan the Map window.setTimeout(function() { $.googleMaps.gMap.panTo($.googleMaps.mapLatLong(opts.pan.panLatitude, opts.pan.panLongitude)); }, opts.pan.timeout); } // LAYER if ( opts.layer ) // Set the Custom Layer $.googleMaps.gMap.addOverlay(new GLayer(opts.layer)); // MARKERS if ( opts.markers ) $.googleMaps.mapMarkers(center, opts.markers); // CONTROLS if ( opts.controls.type || opts.controls.zoom || opts.controls.mapType ) { $.googleMaps.mapControls(opts.controls); } else { if ( !opts.controls.hide ) $.googleMaps.gMap.setUIToDefault(); } // SCROLL if ( opts.scroll ) $.googleMaps.gMap.enableScrollWheelZoom(); else if ( !opts.scroll ) $.googleMaps.gMap.disableScrollWheelZoom(); // LOCAL SEARCH if ( opts.controls.localSearch ) $.googleMaps.gMap.enableGoogleBar(); else $.googleMaps.gMap.disableGoogleBar(); // FEED (RSS/KML) if ( opts.feed ) $.googleMaps.gMap.addOverlay(new GGeoXml(opts.feed)); // TRAFFIC INFO if ( opts.trafficInfo ) { var trafficOptions = {incidents:true}; trafficInfo = new GTrafficOverlay(trafficOptions); $.googleMaps.gMap.addOverlay(trafficInfo); } // DIRECTIONS if ( opts.directions ) { $.googleMaps.directions = new GDirections($.googleMaps.gMap, opts.directions.panel); $.googleMaps.directions.load(opts.directions.route); } if ( opts.streetViewOverlay ) { svOverlay = new GStreetviewOverlay(); $.googleMaps.gMap.addOverlay(svOverlay); } }, mapGeoDesic: function(options) { // Default GeoDesic Options geoDesicDefaults = { startLatitude: 37.4419, startLongitude: -122.1419, endLatitude: 37.4519, endLongitude: -122.1519, color: '#ff0000', pixels: 2, opacity: 10 } // Merge the User & Default Options options = $.extend({}, geoDesicDefaults, options); var polyOptions = {geodesic:true}; var polyline = new GPolyline([ new GLatLng(options.startLatitude, options.startLongitude), new GLatLng(options.endLatitude, options.endLongitude)], options.color, options.pixels, options.opacity, polyOptions ); $.googleMaps.gMap.addOverlay(polyline); }, localSearchControl: function(options) { var controlLocation = $.googleMaps.mapControlsLocation(options.location); $.googleMaps.gMap.addControl(new $.googleMaps.gMap.LocalSearch(), new GControlPosition(controlLocation, new GSize(options.x,options.y))); }, getLatitude: function() { return $.googleMaps.latitude; }, getLongitude: function() { return $.googleMaps.longitude; }, directions: {}, latitude: '', longitude: '', latlong: {}, maps: {}, marker: {}, gMap: {}, defaults: { // Default Map Options latitude: 37.4419, longitude: -122.1419, depth: 13, scroll: true, trafficInfo: false, streetViewOverlay: false, controls: { hide: false, localSearch: false }, layer: null }, mapPolyLine: function(options) { // Default PolyLine Options polylineDefaults = { startLatitude: 37.4419, startLongitude: -122.1419, endLatitude: 37.4519, endLongitude: -122.1519, color: '#ff0000', pixels: 2 } // Merge the User & Default Options options = $.extend({}, polylineDefaults, options); //Return the New Polyline return new GPolyline([ $.googleMaps.mapLatLong(options.startLatitude, options.startLongitude), $.googleMaps.mapLatLong(options.endLatitude, options.endLongitude)], options.color, options.pixels ); }, mapLatLong: function(latitude, longitude) { // Returns Latitude & Longitude Center Point return new GLatLng(latitude, longitude); }, mapPanOptions: function(options) { // Returns Panning Options var panDefaults = { panLatitude: 37.4569, panLongitude: -122.1569, timeout: 0 } return options = $.extend({}, panDefaults, options); }, mapMarkersOptions: function(icon) { //Define an icon var gIcon = new GIcon(G_DEFAULT_ICON); if ( icon.image ) // Define Icons Image gIcon.image = icon.image; if ( icon.shadow ) // Define Icons Shadow gIcon.shadow = icon.shadow; if ( icon.iconSize ) // Define Icons Size gIcon.iconSize = new GSize(icon.iconSize); if ( icon.shadowSize ) // Define Icons Shadow Size gIcon.shadowSize = new GSize(icon.shadowSize); if ( icon.iconAnchor ) // Define Icons Anchor gIcon.iconAnchor = new GPoint(icon.iconAnchor); if ( icon.infoWindowAnchor ) // Define Icons Info Window Anchor gIcon.infoWindowAnchor = new GPoint(icon.infoWindowAnchor); if ( icon.dragCrossImage ) // Define Drag Cross Icon Image gIcon.dragCrossImage = icon.dragCrossImage; if ( icon.dragCrossSize ) // Define Drag Cross Icon Size gIcon.dragCrossSize = new GSize(icon.dragCrossSize); if ( icon.dragCrossAnchor ) // Define Drag Cross Icon Anchor gIcon.dragCrossAnchor = new GPoint(icon.dragCrossAnchor); if ( icon.maxHeight ) // Define Icons Max Height gIcon.maxHeight = icon.maxHeight; if ( icon.PrintImage ) // Define Print Image gIcon.PrintImage = icon.PrintImage; if ( icon.mozPrintImage ) // Define Moz Print Image gIcon.mozPrintImage = icon.mozPrintImage; if ( icon.PrintShadow ) // Define Print Shadow gIcon.PrintShadow = icon.PrintShadow; if ( icon.transparent ) // Define Transparent gIcon.transparent = icon.transparent; return gIcon; }, mapMarkers: function(center, markers) { if ( typeof(markers.length) == 'undefined' ) // One marker only. Parse it into an array for consistency. markers = [markers]; var j = 0; for ( i = 0; i= 1 ) { for ( i = 0; i