<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DZone Snippets: geocode code</title>
    <link>http://snippets.dzone.com/posts</link>
    <pubDate>Fri, 25 Jul 2008 03:23:57 GMT</pubDate>
    <description>DZone Snippets: geocode code</description>
    <item>
      <title>jQuery Maps Interface - Easily create Google or Yahoo maps</title>
      <link>http://snippets.dzone.com/posts/show/4361</link>
      <description>/* jQuery Maps (jmaps) - A jQuery plugin for Google Maps API&lt;br /&gt; * Author: Tane Piper (digitalspaghetti@gmail.com) &lt;br /&gt; * With special thanks Dave Cardwell (who helped on getting the first version of this plugin to work).&lt;br /&gt; * Website: http://code.google.com/p/gmapp/&lt;br /&gt; * Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php&lt;br /&gt; * This plugin is not affiliated with Google or Yahoo.  &lt;br /&gt; * For Google Maps API and T&amp;C see http://www.google.com/apis/maps/&lt;br /&gt; * For Yahoo! Maps API and T&amp;C see http://developer.yahoo.com/maps/&lt;br /&gt; * &lt;br /&gt; * === Changelog ===&lt;br /&gt; * Version 1.3&lt;br /&gt; * Added support for creating Yahoo! Maps, can create Map, Satallite or Hybrid.  Check out available options below&lt;br /&gt; * Added support for creating points on Yahoo! maps.&lt;br /&gt; * Added support for creating Polylines on Yahoo! maps.&lt;br /&gt; * Added support for GeoRSS files on both Yahoo! and Google maps, as well as existing KML support for Google, method&lt;br /&gt; * name was changed from .addKml to .addRss&lt;br /&gt; * Moved directions search out of main namespace, now function that is called from within plugin by providing fields&lt;br /&gt; * &lt;br /&gt; * Version 1.2 (25/07/2007)&lt;br /&gt; * Moved GClientGeocoder into searchAddress method&lt;br /&gt; * Fixed bug in searchAddress method regarding getPoint().&lt;br /&gt; * &lt;br /&gt; * Version 1.1 (16/07/2007)&lt;br /&gt; * Changed name to remove Google from main name - namespace now .jmap.&lt;br /&gt; * Added additional options:&lt;br /&gt; * 	+ Add map dragging enable/disable.&lt;br /&gt; *	+ Add scroll wheel zooming.&lt;br /&gt; *	+ Add smooth continuous zooming (on certain browsers).&lt;br /&gt; *	+ Added clean unloading of Google objects.&lt;br /&gt; * Added .addPoly method.  Allows the creation of polylines on the map.&lt;br /&gt; * Added .addKml support for rendering KML Files.&lt;br /&gt; * Added .directions Driving Direction support.&lt;br /&gt; * &lt;br /&gt; * Version 1.0 (13/07/2007)&lt;br /&gt; * Initial version.&lt;br /&gt; * Creates Google Map.&lt;br /&gt; * Add points to map.&lt;br /&gt; * Takes address or postcode, Geocodes and centers map.  Also creates a draggable marker.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;br /&gt;(function($) {&lt;br /&gt;	/* function searchAddress(jmap, address, settings)&lt;br /&gt;	 * This function is an internal plugin method that returns a GLatLng that can be passed&lt;br /&gt;	 * to a Google map.&lt;br /&gt;	 */&lt;br /&gt;	function searchAddress(jmap, address, settings) {&lt;br /&gt;		&lt;br /&gt;		if (jmap._mapType) {&lt;br /&gt;			alert('Yahoo Maps Geocoding not yet supported');&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		if (jmap.i.Au) {&lt;br /&gt;			GGeocoder = new GClientGeocoder();&lt;br /&gt;			GGeocoder.getLatLng(address, function(point){&lt;br /&gt;				if (!point) {&lt;br /&gt;					alert(address + " not found");&lt;br /&gt;				} else {&lt;br /&gt;					jmap.setCenter(point,settings.zoom);&lt;br /&gt;					var marker = new GMarker(point, {draggable: true});&lt;br /&gt;					jmap.addOverlay(marker);&lt;br /&gt;					pointlocation = marker.getPoint();&lt;br /&gt;					marker.openInfoWindowHtml("Latitude: " + pointlocation.lat() + "&lt;br /&gt;Longitude: " + pointlocation.lng());&lt;br /&gt;					GEvent.addListener(marker, "dragend", function(){&lt;br /&gt;						mylocation = marker.getPoint();&lt;br /&gt;						marker.openInfoWindowHtml("Latitude: " + pointlocation.lat() + "&lt;br /&gt;Longitude: " + pointlocation.lng());			&lt;br /&gt;					});&lt;br /&gt;				}&lt;br /&gt;			});&lt;br /&gt;		}	&lt;br /&gt;	}&lt;br /&gt;	&lt;br /&gt;	/* directions: function(map,query, panel)&lt;br /&gt;	 * Takes a Direction query and returns directions for map.  Optional panel for text information&lt;br /&gt;	 */&lt;br /&gt;	function searchDirections(jmap,query,panel) {&lt;br /&gt;		// Yahoo Maps&lt;br /&gt;		if (jmap._mapType) {&lt;br /&gt;			alert('Yahoo Directions support not yet added')	;&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		// Google Maps&lt;br /&gt;		if (jmap.i.Au) {&lt;br /&gt;			var dirpanel = document.getElementById(panel);&lt;br /&gt;			directions = new GDirections(jmap, dirpanel);&lt;br /&gt;			directions.load(query);&lt;br /&gt;		}&lt;br /&gt;	}&lt;br /&gt;&lt;br /&gt;	$.fn.extend({&lt;br /&gt;	/* jmap: function(settings)&lt;br /&gt;	 * The constructor method&lt;br /&gt;	 * Example: $().jmap();&lt;br /&gt;	 */&lt;br /&gt;	jmap: function(settings) {&lt;br /&gt;		var version = "1.3";&lt;br /&gt;		/* Default Settings*/	&lt;br /&gt;		var settings = jQuery.extend({&lt;br /&gt;			provider: "google",		// can be "google" or "yahoo"&lt;br /&gt;			maptype: "hybrid",		// can be "map", "sat" or "hybrid"&lt;br /&gt;			center: [55.958858,-3.162302],	// G + Y&lt;br /&gt;			zoom: 12,				// G + Y&lt;br /&gt;			controlsize: "small",	// G + Y&lt;br /&gt;			showtype: true,			// G + Y&lt;br /&gt;			showzoom: true,			// Y&lt;br /&gt;			showpan: true,			// Y&lt;br /&gt;			showoverview: true,		// G&lt;br /&gt;			showscale: true,		// Y&lt;br /&gt;			dragging: true,			// G + Y&lt;br /&gt;			scrollzoom: true,		// G + Y&lt;br /&gt;			smoothzoom: true,		// G&lt;br /&gt;			searchfield: "#Address",&lt;br /&gt;			searchbutton: "#findaddress",&lt;br /&gt;			directionsto: "#to",&lt;br /&gt;			directionsfrom: "#from",&lt;br /&gt;			directionsfind: "#getDirections",&lt;br /&gt;			directionspanel: "myDirections"&lt;br /&gt;		},settings);&lt;br /&gt;		&lt;br /&gt;		return this.each(function(){&lt;br /&gt;			switch(settings.provider)&lt;br /&gt;			{&lt;br /&gt;				case "yahoo":&lt;br /&gt;					var jmap = this.jMap = new YMap(this);&lt;br /&gt;					switch(settings.maptype) {&lt;br /&gt;						case "map":&lt;br /&gt;							var loadmap = YAHOO_MAP_REG;&lt;br /&gt;							break;&lt;br /&gt;						case "sat":&lt;br /&gt;							var loadmap = YAHOO_MAP_SAT;&lt;br /&gt;							break;&lt;br /&gt;						default:&lt;br /&gt;							var loadmap = YAHOO_MAP_HYB;&lt;br /&gt;							break;&lt;br /&gt;					}&lt;br /&gt;					jmap.setMapType(loadmap);&lt;br /&gt;					jmap.drawZoomAndCenter(new YGeoPoint(settings.center[0],settings.center[1]), settings.zoom);&lt;br /&gt;					if (settings.showtype == true){&lt;br /&gt;						jmap.addTypeControl();	// Type of map Control&lt;br /&gt;					}&lt;br /&gt;					if (settings.showzoom == true &amp;&amp; settings.controlsize == "small" ){&lt;br /&gt;						jmap.addZoomShort();	// Small zoom control&lt;br /&gt;					}&lt;br /&gt;					if (settings.showzoom == true &amp;&amp; settings.controlsize == "large" ){&lt;br /&gt;						jmap.addZoomLong();		// Large zoom control&lt;br /&gt;					}&lt;br /&gt;					if (settings.showpan == true) {&lt;br /&gt;						jmap.addPanControl();	// Pan control&lt;br /&gt;					}&lt;br /&gt;					if (settings.showscale == false) {&lt;br /&gt;						/* On by default */&lt;br /&gt;						jmap.removeZoomScale();	// Show scale bars&lt;br /&gt;					}&lt;br /&gt;					if (settings.dragging == false) {&lt;br /&gt;						/* On by default */&lt;br /&gt;						jmap.disableDragMap();	// Is map draggable?&lt;br /&gt;					}&lt;br /&gt;					if (settings.scrollzoom == false) {&lt;br /&gt;						/* On by default */&lt;br /&gt;						jmap.disableKeyControls(); // Mousewheel and Keyboard control&lt;br /&gt;					}&lt;br /&gt;					break;&lt;br /&gt;					&lt;br /&gt;				case "mslive":&lt;br /&gt;					alert('Microsoft Live Maps are currently not supported but planned for version 1.4')&lt;br /&gt;					break;&lt;br /&gt;					&lt;br /&gt;				default:	&lt;br /&gt;					var jmap = this.jMap = new GMap2(this);&lt;br /&gt;					switch(settings.maptype) {&lt;br /&gt;						case "map":&lt;br /&gt;							var loadmap = G_NORMAL_MAP;&lt;br /&gt;							break;&lt;br /&gt;						case "sat":&lt;br /&gt;							var loadmap = G_SATELLITE_MAP;&lt;br /&gt;							break;&lt;br /&gt;						default:&lt;br /&gt;							var loadmap = G_HYBRID_MAP;&lt;br /&gt;							break;&lt;br /&gt;					}&lt;br /&gt;					jmap.setCenter(new GLatLng(settings.center[0],settings.center[1]),settings.zoom,loadmap);&lt;br /&gt;					switch(settings.controlsize)&lt;br /&gt;					{&lt;br /&gt;						case "small":&lt;br /&gt;							jmap.addControl(new GSmallMapControl());&lt;br /&gt;							break;&lt;br /&gt;						case "large":&lt;br /&gt;							jmap.addControl(new GLargeMapControl());&lt;br /&gt;							break;&lt;br /&gt;						case "none":&lt;br /&gt;							break;&lt;br /&gt;						default:&lt;br /&gt;							jmap.addControl(new GSmallMapControl());&lt;br /&gt;					}&lt;br /&gt;					if (settings.showtype == true){&lt;br /&gt;						jmap.addControl(new GMapTypeControl());&lt;br /&gt;					}&lt;br /&gt;					if (settings.showoverview == true){&lt;br /&gt;						jmap.addControl(new GOverviewMapControl());&lt;br /&gt;					}&lt;br /&gt;					if (settings.scrollzoom == true) {&lt;br /&gt;						/* Off by default */&lt;br /&gt;						jmap.enableScrollWheelZoom();&lt;br /&gt;					}&lt;br /&gt;					if (settings.smoothzoom == true) {&lt;br /&gt;						/* Off by default*/&lt;br /&gt;						jmap.enableContinuousZoom();&lt;br /&gt;					}&lt;br /&gt;					if (settings.dragging == false) {&lt;br /&gt;						/* On by default */&lt;br /&gt;						jmap.disableDragging();&lt;br /&gt;					}&lt;br /&gt;			}	&lt;br /&gt;			/* Seach for the lat &amp; lng of our address*/&lt;br /&gt;			jQuery(settings.searchbutton).bind('click', function(){&lt;br /&gt;				searchAddress(jmap, jQuery(settings.searchfield).attr('value'), settings);&lt;br /&gt;			});&lt;br /&gt;			/* Search for Directions */&lt;br /&gt;			jQuery(settings.directionsfind).bind("click", function(){&lt;br /&gt;				var from = $(settings.directionsfrom).attr('value');&lt;br /&gt;				var to = $(settings.directionsto).attr('value');&lt;br /&gt;				searchDirections(jmap, "from: " + from + " to: " + to, settings.directionspanel);	&lt;br /&gt;				$(settings.directionsfrom).attr('value', to);&lt;br /&gt;				$(settings.directionsto).attr('value', '');&lt;br /&gt;				return false;&lt;br /&gt;			});&lt;br /&gt;			/* On document unload, clean unload Google API*/&lt;br /&gt;			jQuery(document).unload(function(){ GUnload(); });&lt;br /&gt;		});&lt;br /&gt;		},&lt;br /&gt;	/* myMap: function()&lt;br /&gt;	 * Returns a map object from the API, so it's available to the user&lt;br /&gt;	 * Example: $().myMap().setCenter(...) for Google;&lt;br /&gt;	 * Example: $().myMap().drawZoomAndCenter(...) for Yahoo;&lt;br /&gt;	 */&lt;br /&gt;	myMap: function() {&lt;br /&gt;		return this[0].jMap;	&lt;br /&gt;	},&lt;br /&gt;	/* addPoint: function()&lt;br /&gt;	 * Returns a marker to be overlayed on the Google map&lt;br /&gt;	 * Example: $().addPoint(...);&lt;br /&gt;	 */&lt;br /&gt;	addPoint: function(pointlat, pointlng, pointhtml, isdraggable, removable) {&lt;br /&gt;		var jmap = this[0].jMap;&lt;br /&gt;		// Yahoo Maps&lt;br /&gt;		if (jmap._mapType) {			&lt;br /&gt;			var marker = new YMarker(new YGeoPoint(pointlat, pointlng));	// Create the Yahoo marker type&lt;br /&gt;			YEvent.Capture(marker, EventsList.MouseClick, function(){		// Add mouseclick to open HTML&lt;br /&gt;				marker.openSmartWindow(pointhtml);&lt;br /&gt;			});&lt;br /&gt;			// Below code does not work as expected&lt;br /&gt;			/*if (removable == true) {&lt;br /&gt;				YEvent.Capture(marker, EventsList.MouseDoubleClick, function(){&lt;br /&gt;					jmap.removeOverlay(marker);&lt;br /&gt;				});&lt;br /&gt;			}*/&lt;br /&gt;			jmap.addOverlay(marker);	// Add marker to map&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;		// Google Maps	&lt;br /&gt;		if (jmap.i.Au) {&lt;br /&gt;			var marker = new GMarker(new GLatLng(pointlat,pointlng), { draggable: isdraggable } );&lt;br /&gt;			GEvent.addListener(marker, "click", function(){&lt;br /&gt;				marker.openInfoWindowHtml(pointhtml);&lt;br /&gt;			});&lt;br /&gt;			if (removable == true) {&lt;br /&gt;				GEvent.addListener(marker, "dblclick", function(){&lt;br /&gt;					return jmap.removeOverlay(marker);&lt;br /&gt;				});&lt;br /&gt;			}&lt;br /&gt;			return jmap.addOverlay(marker);&lt;br /&gt;		}&lt;br /&gt;	},&lt;br /&gt;	/* addPoly: function(poly)&lt;br /&gt;	 * Takes an array of GLatLng points, converts it to a vector Polyline to display on the map&lt;br /&gt;	 * Example: $().addPoly(...);&lt;br /&gt;	 */&lt;br /&gt;	addPoly: function (poly, colour, width, alpha) {&lt;br /&gt;		var jmap = this[0].jMap;&lt;br /&gt;		// Yahoo Maps&lt;br /&gt;		if (jmap._mapType) {&lt;br /&gt;			return	jmap.addOverlay(poly, colour, width, alpha);&lt;br /&gt;		}&lt;br /&gt;		// Google Maps&lt;br /&gt;		if (jmap.i.Au) {&lt;br /&gt;			return jmap.addOverlay(poly);&lt;br /&gt;		}&lt;br /&gt;	},&lt;br /&gt;	/* addRss: function()&lt;br /&gt;	 * Takes a KML file and renders it to the map.&lt;br /&gt;	 * Example: $().addPoint(...);&lt;br /&gt;	 */&lt;br /&gt;	addRss: function (rssfile) {&lt;br /&gt;		var jmap = this[0].jMap;&lt;br /&gt;		// Yahoo Maps&lt;br /&gt;		if (jmap._mapType) {&lt;br /&gt;			var geoXml = new YGeoRSS(rssfile);&lt;br /&gt;			return jmap.addOverlay(geoXml);&lt;br /&gt;		}&lt;br /&gt;		// Google Maps&lt;br /&gt;		if (jmap.i.Au) {&lt;br /&gt;			var geoXml = new GGeoXml(rssfile);&lt;br /&gt;			return jmap.addOverlay(geoXml);&lt;br /&gt;		}&lt;br /&gt;		&lt;br /&gt;	}&lt;br /&gt;});&lt;br /&gt;})(jQuery);&lt;br /&gt;&lt;/code&gt;</description>
      <pubDate>Fri, 27 Jul 2007 11:52:21 GMT</pubDate>
      <guid>http://snippets.dzone.com/posts/show/4361</guid>
      <author>digitalspaghetti (Tane Piper)</author>
    </item>
  </channel>
</rss>
