').append(btn)); } this.onGeocodingFinishedSingle = function(place) { log('MS.onGeocodingFinishedSingle'); var point = new GLatLng(place.Point.coordinates[1],place.Point.coordinates[0]); var marker = new GMarker(point,{icon:self.homeMarker}); self.map.clearOverlays(); self.map.addOverlay(marker); self.startDownload(point); } this.onGeocodingFinishedMultiple = function(places) { log('MS.onGeocodingFinishedMultiple'); self.clearRes('ms_Multiple'); $('#ms_res').html('
'+self.text.multiplePlacesFound+'
'); self.map.clearOverlays(); for(var i=0;i').append(btn)); //map.setCenter(point, 6); } this.manualSelectionEnd = function() { if(self.clickListener != null) GEvent.removeListener(self.clickListener); } this.manualSelection = function() { if(self.onBeforeRun) self.onBeforeRun(); self.clearRes('ms_Manual'); $('#ms_res').html(self.text.clickInTheMap); self.map.clearOverlays(); self.clickListener = GEvent.addListener(self.map, "click", function(marker, point) { place = { Point : {coordinates: [point.lng(),point.lat() ] }}; self.manualSelectionEnd(); var s = point.lat() + ' ' + point.lng(); $('#ms_fld').val(s); set_arg(self.hashArgNum, s); self.onGeocodingFinishedSingle(place); /* if (marker) { self.map.removeOverlay(marker); } else { self.map.addOverlay(new GMarker(point,{icon:new GIcon(self.homeMarker)})); } */ }); } this.run = function() { if(self.onBeforeRun) self.onBeforeRun(); var s = $('#ms_fld').val(); if(s=='') return false; /* nebo hlaska: musite neco zadat */ if(s=='debug') { window._debug = true; log('Debugging mode initialized.'); return false; } log('MS.run'); self.manualSelectionEnd(); self.setStatus('searchingAddress') // Initialize map for next search self.map.clearOverlays(); self.map.setCenter(self.startLatLng, 7); // Run geocoding var geocoder = new Geocoder(); geocoder.onerror = self.onerror; geocoder.countryCode = this.countryCode; set_arg(self.hashArgNum, s); // coordinates - don't geocode var r = /(\d+\.\d+)\s(\d+\.\d+)/.exec(s); if(r) { self.onGeocodingFinishedSingle( { Point : {coordinates: [r[2],r[1] ] } } ); return; } geocoder.onFinishedSingle = this.onGeocodingFinishedSingle; geocoder.onFinishedMultiple = this.onGeocodingFinishedMultiple; geocoder.onFinishedNone = this.onGeocodingFinishedNone; geocoder.run(s); } } /** Geocoder - uses Google geocoding and filters the result to a particular country * */ function Geocoder() { this.countryCode = 'CZ'; this.appendCC = false; this.setBC = true; this.onFinishedSingle = null; this.onFinishedMultiple = null; this.onFinishedNone = null; this.onerror = null; this.address = ''; var self = this; this.onload = function(response) { log('GeoCoder.onload'); var j=0;places=[]; for(var i in response.Placemark) if(response.Placemark[i].AddressDetails.Country && response.Placemark[i].AddressDetails.Country.CountryNameCode==self.countryCode) places[j++] = response.Placemark[i]; if (response.Status.code != 200 || places.length == 0) { if(response.Status.code == 200 && !self.setBC) { self.setBC = true; self.run(self.address); } else if (response.Status.code == 200 && !self.appendCC) { self.appendCC = true; self.run(self.address); } else if (response.Status.code == 200 || response.Status.code == 602) { self.onFinishedNone(); } else self.onerror("GEO"+response.Status.code); } else if(places.length == 1) { self.onFinishedSingle(places[0]); } else { self.onFinishedMultiple(places); } } this.run = function(address) { this.address = address; var geocoder = new GClientGeocoder(); geocoder.reset(); if(this.setBC) geocoder.setBaseCountryCode(this.countryCode); if(this.appendCC) address += ', '+this.countryCode; log('Gecoding: '+address); //alert(address); geocoder.getLocations(address, this.onload); } } /** MultiRoutes - load multiple routes from one point to multiple points with * min requests possible * * routes = new MultiRoutes(); * routes.timeout: int // max alowed time before throwing onerror, default 5000 * routes.onerror: function(msg) // error handler, default alert(msg) * routes.getRoutes(string from, string[] to, function(GRoute[] routes) onload) */ function MultiRoutes() { this.onload = null; this.onerror = function(msg) { alert('Error while roaddist: '+msg); }; this.gdir = []; this.result = []; this.finished = -1; // number of finished requests this.qlen = 12; // max query length this.timeout = 5000; this.timeoutId = null; var me = this; // gdir's load event handler this.GDirLoad = function(gdir) { var html = '