git-svn-id: https://192.168.0.254/svn/Proyectos.EstudioJuridicoAlmagro_Web/trunk@3 c22fe52d-42d7-ba4f-95f7-33effcf65713
216 lines
8.5 KiB
JavaScript
216 lines
8.5 KiB
JavaScript
/**
|
|
* jQuery gMap
|
|
*
|
|
* @url http://gmap.nurtext.de/
|
|
* @author Cedric Kastner <cedric@nur-text.de>
|
|
* @version 1.1.0
|
|
|
|
|
|
2011-04-25
|
|
is changed by Arsen Kirillov
|
|
$gmap -> moves to var gmap; in all text ...
|
|
|
|
*/
|
|
(function($)
|
|
{
|
|
|
|
|
|
// Main plugin function
|
|
$.fn.gMap = function(options)
|
|
{
|
|
|
|
var gmap;
|
|
// Check if the browser is compatible
|
|
if (!window.GBrowserIsCompatible || !GBrowserIsCompatible()) return this;
|
|
|
|
// Build main options before element iteration
|
|
var opts = $.extend({}, $.fn.gMap.defaults, options);
|
|
|
|
// Iterate through each element
|
|
return this.each(function()
|
|
{
|
|
// Create map and set initial options
|
|
gmap = new GMap2(this);
|
|
|
|
// Create new object to geocode addresses
|
|
$geocoder = new GClientGeocoder();
|
|
|
|
// Check for address to center on
|
|
if (opts.address)
|
|
{
|
|
// Get coordinates for given address and center the map
|
|
$geocoder.getLatLng(opts.address, function(gpoint){ gmap.setCenter(gpoint, opts.zoom); });
|
|
|
|
}
|
|
else
|
|
{
|
|
// Check for coordinates to center on
|
|
if (opts.latitude && opts.longitude)
|
|
{
|
|
// Center map to coordinates given by option
|
|
gmap.setCenter(new GLatLng(opts.latitude, opts.longitude), opts.zoom);
|
|
|
|
}
|
|
else
|
|
{
|
|
// Check for a marker to center on (if no coordinates given)
|
|
if ($.isArray(opts.markers) && opts.markers.length > 0)
|
|
{
|
|
// Check if the marker has an address
|
|
if (opts.markers[0].address)
|
|
{
|
|
// Get the coordinates for given marker address and center
|
|
$geocoder.getLatLng(opts.markers[0].address, function(gpoint){ gmap.setCenter(gpoint, opts.zoom); });
|
|
|
|
}
|
|
else
|
|
{
|
|
// Center the map to coordinates given by marker
|
|
gmap.setCenter(new GLatLng(opts.markers[0].latitude, opts.markers[0].longitude), opts.zoom);
|
|
|
|
}
|
|
|
|
|
|
}
|
|
else
|
|
{
|
|
// Revert back to world view
|
|
gmap.setCenter(new GLatLng(34.885931, 9.84375), opts.zoom);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Set the preferred map type
|
|
gmap.setMapType(opts.maptype);
|
|
|
|
// Check for map controls
|
|
if (opts.controls.length == 0)
|
|
{
|
|
// Default map controls
|
|
gmap.setUIToDefault();
|
|
|
|
}
|
|
else
|
|
{
|
|
// Add custom map controls
|
|
for (var i = 0; i < opts.controls.length; i++)
|
|
{
|
|
// Eval is evil
|
|
eval('gmap.addControl(new ' + opts.controls[i] + '());');
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Check if scrollwheel should be enabled
|
|
if (opts.scrollwheel == true && opts.controls.length != 0) { gmap.enableScrollWheelZoom(); }
|
|
|
|
// Loop through marker array
|
|
for (var j = 0; j < opts.markers.length; j++)
|
|
{
|
|
// Get the options from current marker
|
|
marker = opts.markers[j];
|
|
|
|
// Create new icon
|
|
gicon = new GIcon();
|
|
|
|
// Set icon properties from global options
|
|
gicon.image = opts.icon.image;
|
|
gicon.shadow = opts.icon.shadow;
|
|
gicon.iconSize = ($.isArray(opts.icon.iconsize)) ? new GSize(opts.icon.iconsize[0], opts.icon.iconsize[1]) : opts.icon.iconsize;
|
|
gicon.shadowSize = ($.isArray(opts.icon.shadowsize)) ? new GSize(opts.icon.shadowsize[0], opts.icon.shadowsize[1]) : opts.icon.shadowsize;
|
|
gicon.iconAnchor = ($.isArray(opts.icon.iconanchor)) ? new GPoint(opts.icon.iconanchor[0], opts.icon.iconanchor[1]) : opts.icon.iconanchor;
|
|
gicon.infoWindowAnchor = ($.isArray(opts.icon.infowindowanchor)) ? new GPoint(opts.icon.infowindowanchor[0], opts.icon.infowindowanchor[1]) : opts.icon.infowindowanchor;
|
|
|
|
if (marker.icon)
|
|
{
|
|
// Overwrite global options
|
|
gicon.image = marker.icon.image;
|
|
gicon.shadow = marker.icon.shadow;
|
|
gicon.iconSize = ($.isArray(marker.icon.iconsize)) ? new GSize(marker.icon.iconsize[0], marker.icon.iconsize[1]) : marker.icon.iconsize;
|
|
gicon.shadowSize = ($.isArray(marker.icon.shadowsize)) ? new GSize(marker.icon.shadowsize[0], marker.icon.shadowsize[1]) : marker.icon.shadowsize;
|
|
gicon.iconAnchor = ($.isArray(marker.icon.iconanchor)) ? new GPoint(marker.icon.iconanchor[0], marker.icon.iconanchor[1]) : marker.icon.iconanchor;
|
|
gicon.infoWindowAnchor = ($.isArray(marker.icon.infowindowanchor)) ? new GPoint(marker.icon.infowindowanchor[0], marker.icon.infowindowanchor[1]) : marker.icon.infowindowanchor;
|
|
|
|
}
|
|
|
|
// Check if address is available
|
|
if (marker.address)
|
|
{
|
|
// Check for reference to the marker's address
|
|
if (marker.html == '_address') { marker.html = marker.address; }
|
|
|
|
// Get the point for given address
|
|
$geocoder.getLatLng(marker.address, function(gicon, marker)
|
|
{
|
|
// Since we're in a loop, we need a closure when dealing with event handlers, return functions, etc.
|
|
// See <http://www.mennovanslooten.nl/blog/post/62> for more information about closures
|
|
return function(gpoint)
|
|
{
|
|
// Create marker
|
|
gmarker = new GMarker(gpoint, gicon);
|
|
|
|
// Set HTML and check if info window should be opened
|
|
if (marker.html) { gmarker.bindInfoWindowHtml(opts.html_prepend + marker.html + opts.html_append); }
|
|
if (marker.html && marker.popup) { gmarker.openInfoWindowHtml(opts.html_prepend + marker.html + opts.html_append); }
|
|
|
|
// Add marker to map
|
|
if (gmarker) { gmap.addOverlay(gmarker); }
|
|
}
|
|
|
|
}(gicon, marker));
|
|
|
|
}
|
|
else
|
|
{
|
|
// Check for reference to the marker's latitude/longitude
|
|
if (marker.html == '_latlng') { marker.html = marker.latitude + ', ' + marker.longitude; }
|
|
|
|
// Create marker
|
|
gmarker = new GMarker(new GPoint(marker.longitude, marker.latitude), gicon);
|
|
|
|
// Set HTML and check if info window should be opened
|
|
if (marker.html) { gmarker.bindInfoWindowHtml(opts.html_prepend + marker.html + opts.html_append); }
|
|
if (marker.html && marker.popup) { gmarker.openInfoWindowHtml(opts.html_prepend + marker.html + opts.html_append); }
|
|
|
|
// Add marker to map
|
|
if (gmarker) { gmap.addOverlay(gmarker); }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
}
|
|
|
|
// Default settings
|
|
$.fn.gMap.defaults =
|
|
{
|
|
address: '',
|
|
latitude: 0,
|
|
longitude: 0,
|
|
zoom: 1,
|
|
markers: [],
|
|
controls: [],
|
|
scrollwheel: true,
|
|
maptype: G_NORMAL_MAP,
|
|
html_prepend: '<div class="gmap_marker">',
|
|
html_append: '</div>',
|
|
icon:
|
|
{
|
|
image: "http://www.google.com/mapfiles/marker.png",
|
|
shadow: "http://www.google.com/mapfiles/shadow50.png",
|
|
iconsize: [20, 34],
|
|
shadowsize: [37, 34],
|
|
iconanchor: [9, 34],
|
|
infowindowanchor: [9, 2]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})(jQuery); |