[Linpha-cvs] SF.net SVN: linpha: [4923] trunk/linpha2/lib/plugins/maps/class.googlemaps. YUI.js
Status: Inactive
Brought to you by:
bzrudi
From: <fan...@us...> - 2008-04-26 11:11:00
|
Revision: 4923 http://linpha.svn.sourceforge.net/linpha/?rev=4923&view=rev Author: fangehrn Date: 2008-04-26 04:10:52 -0700 (Sat, 26 Apr 2008) Log Message: ----------- Added Paths: ----------- trunk/linpha2/lib/plugins/maps/class.googlemaps.YUI.js Copied: trunk/linpha2/lib/plugins/maps/class.googlemaps.YUI.js (from rev 4922, trunk/linpha2/lib/plugins/maps/class.googlemaps.js) =================================================================== --- trunk/linpha2/lib/plugins/maps/class.googlemaps.YUI.js (rev 0) +++ trunk/linpha2/lib/plugins/maps/class.googlemaps.YUI.js 2008-04-26 11:10:52 UTC (rev 4923) @@ -0,0 +1,270 @@ + +var LinMapObject = Class.create(); +var myLinMapObject; + +var googlemap = false; // the main google map object +var geocoder = false; // the main google geocoder object + +LinMapObject.prototype = +{ + /** + * initialize() + * Constructor runs on completion of the DOM loading. + */ + initialize: function() + { + this.bounds = false; + }, + + createMap: function() + { + var mapType = 'hybrid'; // 'normal', 'satellite' + var mapLargeControl = 1; + var mapMouseZoom = 1; + var mapOverview = 1; + var mapMinZoom = 1; + var mapMaxZoom = 23; + var mapDefaultZoom = 4; + var mapDefaultLat = 49.9801; + var mapDefaultLng = 10.8731; + + geocoder = new GClientGeocoder(); + googlemap = new google.maps.Map2(document.getElementById("linDivMapObject")); + + googlemap.setCenter(new google.maps.LatLng(mapDefaultLat, mapDefaultLng), mapDefaultZoom); + + switch(mapType) { + case 'normal': + googlemap.setMapType(G_NORMAL_MAP); + break; + case 'satellite': + googlemap.setMapType(G_SATELLITE_MAP); + break; + case 'hybrid': + googlemap.setMapType(G_HYBRID_MAP); + break; + } + + + if(mapMouseZoom) { + googlemap.enableScrollWheelZoom(); + var mapdiv = document.getElementById("linDivMapObject"); + GEvent.addDomListener(mapdiv, "DOMMouseScroll", linMapWheelevent); + mapdiv.onmousewheel = linMapWheelevent; + } + if(mapOverview) { + googlemap.addControl(new GOverviewMapControl()); + } + + if(mapLargeControl) { + googlemap.addControl(new GLargeMapControl()); + } else { + googlemap.addControl(new GSmallMapControl()); + } + + googlemap.addControl(new GMapTypeControl()); + + var mycontrol = new GMapTypeControl(); + googlemap.addControl(mycontrol); + new GKeyboardHandler(googlemap); + googlemap.enableDoubleClickZoom(); + googlemap.enableContinuousZoom(); + + + // prevent memory leaks in internet explorer + Event.observe(window, 'unload', GUnload, false); + GEvent.addListener(googlemap, "zoomend", myLinMaps.updateEditMarker); + }, + + initBounds: function() + { + this.bounds = new GLatLngBounds(); + }, + updateCenter: function( zoom ) + { + if( zoom == 0 ) { + zoom = googlemap.getBoundsZoomLevel(this.bounds); + } + + googlemap.setCenter(this.bounds.getCenter(), zoom); + }, + + createMarker: function( markerNode, markerType, openMarker ) + { + /*var icon = new GIcon(); + icon.image = image[0]; + icon.iconSize = new GSize(image[1], image[2]); + subt = image[2] / 100 * 11; + subt = Math.ceil(subt); + var anchor = image[2] - subt; + icon.iconAnchor= new GPoint(10, anchor); + //{icon: icon, draggable: true}*/ + + /** + * + http://www.google.com/intl/de_ALL/mapfiles/marker.png + http://www.google.com/intl/de_ALL/mapfiles/shadow50.png + + http://maps.google.com/mapfiles/ms/micons/red.png + http://maps.google.com/mapfiles/ms/micons/blue.png + http://maps.google.com/mapfiles/ms/micons/green.png + http://maps.google.com/mapfiles/ms/micons/lightblue.png + http://maps.google.com/mapfiles/ms/micons/yellow.png + http://maps.google.com/mapfiles/ms/micons/purple.png + http://maps.google.com/mapfiles/ms/micons/pink.png + + http://maps.google.com/mapfiles/ms/micons/red-dot.png + http://maps.google.com/mapfiles/ms/micons/blue-dot.png + http://maps.google.com/mapfiles/ms/micons/green-dot.png + http://maps.google.com/mapfiles/ms/micons/ltblue-dot.png + http://maps.google.com/mapfiles/ms/micons/yellow-dot.png + http://maps.google.com/mapfiles/ms/micons/purple-dot.png + http://maps.google.com/mapfiles/ms/micons/pink-dot.png + + http://maps.google.com/mapfiles/ms/micons/pushpin_shadow.png + http://maps.google.com/mapfiles/ms/micons/blue-pushpin.png + http://maps.google.com/mapfiles/ms/micons/red-pushpin.png + http://maps.google.com/mapfiles/ms/micons/grn-pushpin.png + http://maps.google.com/mapfiles/ms/micons/ltblu-pushpin.png + http://maps.google.com/mapfiles/ms/micons/ylw-pushpin.png + http://maps.google.com/mapfiles/ms/micons/purple-pushpin.png + http://maps.google.com/mapfiles/ms/micons/pink-pushpin.png + * + */ + + //alert( markerNode.id + ' ' + markerNode.name + ' ' + markerNode.lat + ' ' + markerNode.lon); + + var point = new GLatLng( markerNode.lat, markerNode.lon); + + switch(markerNode.type) { + case 'album': + var icon = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/ms/micons/blue-dot.png") + break; + case 'marker': + var icon = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/ms/micons/purple-dot.png") + break; + case 'albumWithImg': + var icon = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/ms/micons/green-dot.png") + break; + case 'images': + var icon = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/ms/micons/yellow-dot.png") + break; + default: + var icon = new GIcon(G_DEFAULT_ICON, "http://maps.google.com/mapfiles/ms/micons/blue-dot.png") + break; + } + icon.iconSize = new GSize(32, 32); + var marker = new GMarker(point, icon); + + GEvent.addListener(marker, "click", function() { + marker.openInfoWindowHtml( linGetMarkerHtml(markerNode) ); + }); + + googlemap.addOverlay( marker ); + + this.bounds.extend(point); + + if( openMarker ) { + GEvent.trigger(marker, 'click'); + } + + return marker; + }, + + createEditMarker: function( center ) + { + myLinMaps.editMarker = new GMarker(center, {draggable: true}); + + var inputForm = document.createElement("form"); + inputForm.setAttribute("action",""); + inputForm.setAttribute("method","POST"); + inputForm.setAttribute("id","linFormEditMarker"); + inputForm.onsubmit = function() {myLinGlobal.AjaxPost(myLinMaps.ajaxUrl, Form.serialize(this),myLinMaps.saveMarker); return false;}; + inputForm.innerHTML = $('linDivEditMarker').innerHTML; + + myLinMaps.editMarker.bindInfoWindow( inputForm ); // The marker.bindInfoWindow*() methods create GEvent listeners that perform the corresponding marker.openInfoWindow*() calls when the marker is clicked. + + GEvent.addListener(myLinMaps.editMarker, "drag", function() { + myLinMaps.updateEditMarker(); + }); + + /*GEvent.addListener(marker, "dragstart", function() { + map.closeInfoWindow(); + });*/ + + GEvent.addListener(myLinMaps.editMarker, "dragend", function() { + GEvent.trigger(myLinMaps.editMarker, 'click'); + }); + + googlemap.addOverlay( myLinMaps.editMarker ); + GEvent.trigger(myLinMaps.editMarker, 'click'); + myLinMaps.updateEditMarker(); + }, + + closeMarkerWindows: function() { + googlemap.closeInfoWindow(); + }, + + removeMarker: function( marker) + { + googlemap.removeOverlay( marker ); + }, + + openImage: function(imgIndex) + { + GEvent.trigger(myLinMaps.imagesObj[imgIndex], 'click'); + }, + + checkResize: function() + { + //alert("typeof googlemap.checkResize: " + typeof googlemap.checkResize ); + if( typeof googlemap.checkResize != "undefined" ) { + googlemap.checkResize(); + } + }, + + geocodeAddress: function(address) + { + if( myLinMaps.editMarker ) + { + googlemap.removeOverlay( myLinMaps.editMarker ); + } + + if( address == '' ) + { + this.createEditMarker( googlemap.getCenter() ); + } + else + { + geocoder.getLatLng( + address, + function(point) + { + if(!point) { + alert(address + " not found"); + } else { + googlemap.setCenter(point, myLinMaps.defaultMarkerZoom); + myLinMapObject.createEditMarker( point ); + $('linInputMarkerName').value = address; + } + } + ); + } + } +} + + +function linMapWheelevent(e) +{ + if (!e) e = window.event; + if (e.preventDefault) e.preventDefault(); + e.returnValue = false; +} + +function linMapObjectInit() +{ + myLinMapObject = new LinMapObject(); + + google.load("maps", "2.x"); + google.setOnLoadCallback(myLinMapObject.createMap); +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |