• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

Offline Google Maps im HTML Export

happyworld

Geocacher
Hallo alle miteinander,

hab mich mal über ein Makro hergemacht, das Original gibt es hier.

Benötigt wird dazu WGET. Mit dem Makro können Ausschnitte von Google Maps in die Beschreibung importiert werden und die Ausschnitte jetzt auch Offline gespeichert werden um sie für den HTML Export für den PDA bereit zu stellen.

Zu finden ist es hier. Unter Artikel.

Und bitte jetzt nicht hunderte von Maps runterladen!!!

Viel Spaß damit

Sascha
 

JamesDoe

Geomaster
Es gibt einen kleinen Fehler in Zeile 170, anstatt da auch eine Variable zu setzen für den Ausgabepfad steht da ein fester Pfad. Wenn der User oben den Pfad an die Installation anpasst, gibt es unten doch keine Ausgabe.
 
OP
happyworld

happyworld

Geocacher
JamesDoe schrieb:
Es gibt einen kleinen Fehler in Zeile 170, anstatt da auch eine Variable zu setzen für den Ausgabepfad steht da ein fester Pfad. Wenn der User oben den Pfad an die Installation anpasst, gibt es unten doch keine Ausgabe.

Besten Dank für die Info. Ist auch schon geändert.

Sascha
 

JamesDoe

Geomaster
Ein kleines Problem habe ich noch.

Das Script erstellt googlemap.bat, führt sie aber nicht aus. Ist das so, oder habe ich da ein kleines Problem?

Ich habe für mich an Zeile 6 (wobei die Position nicht relevant ist) folgendes eingefügt:

Code:
$htmlmapdir="..\googlemaps\"

Und die Zeile 171 entsprechend auf

Code:
	  $gmapimg="<img src='"+$htmlmapdir+$d_code+"map.gif'><br><br>"

geändert. Damit erstellt mir das Script relative Pfade und keine Absoluten mehr. Damit kann ich meinen ganzen Ordner "Geocaching" komplett auf die CF-Karte schieben und die Bilder/Karten erscheinen dort auch.
 
OP
happyworld

happyworld

Geocacher
JamesDoe schrieb:
Ein kleines Problem habe ich noch.

Das Script erstellt googlemap.bat, führt sie aber nicht aus. Ist das so, oder habe ich da ein kleines Problem?

Ne, das ist im Moment Richtig so. Hab das schon probiert die Batch Datei mit

Code:
RUNPGM pgm="C:\Programme\wget\googlemap.bat" WAIT=Yes

auf zu rufen, die Batch Datei wird auch gestartet, aber nicht korrekt abgearbeitet. Muss mir das noch mal genauer anschauen.

JamesDoe schrieb:
Ich habe für mich an Zeile 6 (wobei die Position nicht relevant ist) folgendes eingefügt:

Code:
$htmlmapdir="..\googlemaps"

Und die Zeile 171 entsprechend auf

Code:
	  $gmapimg="<img src='"+$htmlmapdir+$d_code+"map.gif'><br><br>"

geändert. Damit erstellt mir das Script relative Pfade und keine Absoluten mehr. Damit kann ich meinen ganzen Ordner "Geocaching" komplett auf die CF-Karte schieben und die Bilder/Karten erscheinen dort auch.

Nimmst Du den normalen HTML Export? Da sind die Maps ja mit im Export Verzeichnis.

Das sieht doch gut aus (hab das jetzt mal mit eingebaut), muss mir das mal anschauen was dann im GPX Export für GPXSonar steht, damit dort auch die Bilder angezeigt werden, da muss ich wohl wieder was zusammen frickeln damit ich dort auch die Maps und die Spoiler Bilder angezeigt bekomme. Das werd ich aber wohl erst am Samstag machen.

Ansonsten wenn Du noch mehr Ideen hast, immer her damit.
 

JamesDoe

Geomaster
Ich lasse mir mittels GSAK HTML-Seiten erzeugen in die die Bilder eingebunden werden.

Ich habe für mich im Prinzip eine Ordnerstruktur wie folgt: (nur damit es beim updaten übersichtlich bleibt)

Geocaching
- Cache
- Googlemap
- Poi
- Spoiler

Im Ordner "Cache" liegen die ganzen HTML-Seiten erzeugt von GSAK
Im Ordner "Googlemap" werden die verschiedenen Karten erscheinen
Im Ordner "POI" erzeuge ich dann aus den Daten noch Pois
Im Ordner "Spoiler" liegen die ganzen Spoilerbilder und deren Webseiten.

Nach einem Update der Datenbank erstelle ich ein "notfound.gpx", starte dann Spoilersync, und hinterher dann dieses Script. Damit werden die Bilder in die Usernotes eingefügt.

Ich habe auch dieses Script geändert um dort relative Pfade zu erhalten.

Hinterher brauche ich die ganzen Daten nur noch auf die CF-Karte schieben, und dann kann ich mir alles im IE des PDA anschauen und nachlesen.
 
OP
happyworld

happyworld

Geocacher
JamesDoe schrieb:
Ich lasse mir mittels GSAK HTML-Seiten erzeugen in die die Bilder eingebunden werden.

Ich habe für mich im Prinzip eine Ordnerstruktur wie folgt: (nur damit es beim updaten übersichtlich bleibt)

Geocaching
- Cache
- Googlemap
- Poi
- Spoiler

Im Ordner "Cache" liegen die ganzen HTML-Seiten erzeugt von GSAK
Im Ordner "Googlemap" werden die verschiedenen Karten erscheinen
Im Ordner "POI" erzeuge ich dann aus den Daten noch Pois
Im Ordner "Spoiler" liegen die ganzen Spoilerbilder und deren Webseiten.

Wenn ich jetzt mit GSAK den HTML Export mache kopiert er doch alle Grafiken mit in das Verzeichnis wo auch die HTML Dateien liegen. Oder habe ich da was übersehen, das ich noch Verzeichnisse angeben kann.

Im Moment komm ich da jetzt nicht so ganz hinter :?
 

JamesDoe

Geomaster
aber nicht die über die Usernotes eingebundenen - oder ich habe da was übersehen.

Es gibt zwar irgendwo die Möglichkeit irgendwas global zu ersetzen, aber das ist ja nicht nötig.

Im Übrigen läuft das Script jetzt:

Zeile 150
Code:
  	SET $Data = AppendFile("$wget"+"googlemap.bat","cd c:\Programme\wget" + $_NewLine)

Zeile 210
Code:
	RUNPGM pgm="C:\Programme\wget\googlemap.bat" wait=yes

Das Problem ist, dass GSAK die googlemap.bat im Ordner C:\Programme\GSAK ausführen will. In Zeile 150 füge ich nun einen Wechsel der Ordner ein. Damit funktioniert dann auch Zeile 210 problemlos.

Weiterhin habe ich in Zeile 12
Code:
$wait="10"				#Wartezeit bis wget die nächste Anfrage stellt.
eingefügt.

Dies kommt in dann in Zeile 182
Code:
	  	SET $Data = AppendFile("$wget"+"googlemap.bat","@ping localhost -n "+ $wait +" >NUL" + $_NewLine)
hiermit zum Tragen.

Damit kann man auch einen Flood des Mapservers vermeiden und somit ein Ausgesperrt werden.

Das ganze Script in voller Länge
Code:
# modified by happyworld
# [email protected]
# happyworld-gc.de.vu
#debug STATUS=on
#-----------------user edit------------------------
$googlemapdir="C:\Programme\GSAK\googlemap\"
$htmlmapdir="..\googlemaps\"
$wget="c:\Programme\wget\"
$hoehe="400" 			#Höhe der Karte
$breite="400"			#Breite der Karte
$zoom="2000"			#Zoomlevel (in Feet?) 
$wait="10"				#Wartezeit bis wget die nächste Anfrage stellt.
#---------------end user edit----------------------
$EraseFiles = $wget + "\googlemap.bat"
IF FileExists ($EraseFiles)
  FILEERASE File=$EraseFiles
ENDIF
# end mod

$rbInsert = TRUE
if ShowForm($ChooseAction)

	if $btCancel
		#cancelled with Cancel button
	endif

	if $btGo

		#Sort to anything but the UserNote field, to avoid early exit while
		#processing records. First, save current sort field.
		$CurrentSort = $_SortBy
		SORT By="Name"

		if $rbInsert
			GOSUB Name="CreateNotes"
		endif
		if $rbRemove
			GOSUB Name="ClearNotes"
		endif

		#Restore old sort sequence
		$SortData = Extract($CurrentSort, "=", 1)
		$Sequence = Extract($CurrentSort, "=", 2)
		SORT By=$SortData Sequence=$Sequence

	endif

else

	#cancelled with [X] button

endif

<Data> Varname=$ChooseAction
Name = Form1
  type = form
  left = 287
  top = 351
  height = 179
  width = 250
  caption=Google Maps in Notes

Name = lbChoose
  type = Label
  left = 15
  top = 13
  height = 13
  width = 111
  Caption = Bitte wählen...

Name = frmGroup
  type = GroupBox
  left = 14
  top = 33
  height = 69
  width = 217

Name = rbInsert
  type = RadioButton
  left = 10
  top = 15
  height = 17
  width = 15
  container = frmGroup

Name = lbInsert
  type = Label
  left = 30
  top = 18
  height = 13
  width = 134
  container = frmGroup
  caption = Google Maps in die Notes einfügen

Name = rbRemove
  type = RadioButton
  left = 10
  top = 40
  height = 17
  width = 15
  container = frmGroup

Name = lbRemove
  type = Label
  left = 30
  top = 43
  height = 13
  width = 160
  container = frmGroup
  caption = Google Maps aus den Notes entfernen

Name = btGo
  type = Button
  left = 15
  top = 117
  height = 25
  width = 79
  caption = OK

Name = btCancel
  type = Button
  left = 140
  top = 117
  height = 25
  width = 75
  caption = abbrechen
<EndData>


BEGINSUB Name="CreateNotes"
	#*******************************************************
	# gmapnote.txt - google maps insert into user notes
	# Version 0.1a
	# 24/01/2007 Initial version tested in Beta V7
	#
	# This will run against your current filter and update
	# your database usernotes to insert a Google Map
	# it will insert Image ref after your own notes and will
	# try and bypass update if Image already exists
	#
	#*******************************************************

	$debugcode = False

	$Gmapdata = "Google Maps insert <br>"
	$x = 0
	$temp = GetEnvV("temp")
	$mapdata = ""
	Goto Position=Top
  	SET $Data = AppendFile("$wget"+"googlemap.bat","cd c:\Programme\wget" + $_NewLine)
	# modified by happyworld
	# [email protected]
	# happyworld-gc.de.vu

	$ThisRecord = 0
	# end mod

	While .not. $_eol
	  $x = $x + 1
	  $gmoffset=4294967296
	  $gmlat=Val($d_Latitude) * 1e6
	  $gmlon=Val($d_Longitude) * 1e6
	  If ($gmlat < 0)
	    $gmlat=$gmlat + $gmoffset
	  EndIf
	  $sgmlat=NumtoStr(Int($gmlat))
	  $sgmlon=NumtoStr(Int($gmlon))

	# modified by happyworld
	# [email protected]
	# happyworld-gc.de.vu

	$status = "Cache: " + "$ThisRecord" + " of " + "$_Count"
	SHOWSTATUS Height=150 Width=400 Left=200 Top=200 msg="$status"
	$gmapimg="<img src='"+$htmlmapdir+$d_code+"map.gif'><br><br>"
	$FILEGET="$googlemapdir"+"$d_code"+"map.gif"
	IF .NOT. FileExists($FILEGET)
		$ThisRecord = $ThisRecord + 1
	  	$gmapimga=Chr(34)+"http://maps.google.com/mapdata?Point=b&Point.latitude_e6="+ $sgmlat +"&Point.longitude_e6="+ $sgmlon +"&Point.iconid=15&Point=e&latitude_e6="+ $sgmlat +"&longitude_e6="+ $sgmlon +"&zm="+ $zoom +"&w="+ $breite +"&h="+ $hoehe +"&cc=us&min_priority=1"+Chr(34)
	  	$Data="wget -O " + "$googlemapdir"+$d_Code+"map.gif" + " " + $gmapimga  + $_NewLine
	  	SET $Data = AppendFile("$wget"+"googlemap.bat","$Data")
	  	SET $Data = AppendFile("$wget"+"googlemap.bat","@ping localhost -n "+ $wait +" >NUL" + $_NewLine)
		IF Left($Data,7) = "*Error*"
			Pause Msg="$Data"
			CANCEL
		ENDIF
	ENDIF
	# mod end
	#$mapdata = $mapdata + $d_Name +" : "+$d_Latitude + " ," + $d_Longitude +$_NewLine + $gmapimg + $_NewLine
	# $mapdata = $mapdata + $d_Name +" : "+$d_Latitude +"("+ NumtoStr($gmx) + ") ," + $d_Longitude + " gmy ("+ NumtoStr($gmy) + " )"+$_NewLine

	if At($Gmapdata,$d_UserNote) = 0
		$oldnote=$d_UserNote
	    $d_UserNote=$Gmapdata +  $_NewLine + $gmapimg + $_NewLine + $oldnote
	    $mapdata = $mapdata + "Updating Notes for: " + $d_Name  + $_NewLine
	else
	    $mapdata = $mapdata + "skipped Notes update: " + $d_Name  + $_NewLine
	EndIf

	Goto Position=Next

	EndWhile

	$mapdata = $mapdata + "Total records:"+ NumToStr($x)

	if $debugcode
	  $FileName = $temp + "\gmapdata.txt"
	  $Error = PutFile($FileName,$mapdata)
	  OpenFile file="$FileName"
	EndIf
	RUNPGM pgm="C:\Programme\wget\googlemap.bat" wait=yes
ENDSUB

BEGINSUB Name="ClearNotes"

	#*******************************************************
	# cleargmapnote.txt - google maps insert into user notes
	# Version 0.1
	# 24/01/2007 Initial version tested in Beta V7
	#
	# This will run against your current filter and update
	# your database usernotes to remove a Google Map
	#
	#*******************************************************

	$debugcode = False

	$Gmapdata = "Google Maps insert <br>"
	$x = 0
	$temp = GetEnvV("temp")
	$mapdata = ""
	Goto Position=Top

# modified by happyworld
# [email protected]
# happyworld-gc.de.vu

$ThisRecord = 0

# end mod

	While .not. $_eol

# modified by happyworld
# [email protected]
# happyworld-gc.de.vu

	  $ThisRecord = $ThisRecord + 1
		$status = "Cache: " + "$ThisRecord" + " of " + "$_Count"
		SHOWSTATUS Height=150 Width=400 Left=200 Top=200 msg="$status"

# end mod

		$x = $x + 1

	  If At($Gmapdata,$d_UserNote) <> 0
	    $oldnote=$d_UserNote
	    $sregexp=$Gmapdata + $_NewLine + "<img.*>" + $_NewLine
	    $newnote=RegExReplace($sregexp, $oldnote, "")
	    $mapdata = $mapdata + "old note: " +$oldnote +$_NewLine + "new note: " + $newnote + $_NewLine
	    $d_UserNote=$newnote

# modified by happyworld
# [email protected]
# happyworld-gc.de.vu

			$EraseFile = $googlemapdir + $d_Code+"map.gif"
			IF FileExists ($EraseFile)
  			FILEERASE File=$EraseFile
			ENDIF
# end mod

	  EndIf

	  Goto Position=Next

	EndWhile

	$mapdata = $mapdata + "Total records:"+ NumToStr($x)

	if $debugcode
	  $FileName = $temp + "\gmapdata.txt"
	  $Error = PutFile($FileName,$mapdata)
	  OpenFile file="$FileName"
	EndIf

ENDSUB
 
OP
happyworld

happyworld

Geocacher
Super das gefällt mir.

Besten Dank, sag ich da mal.

Werd es dann auf den Server legen und die Beschreibung dann mal anpassen.

Sascha
 

JamesDoe

Geomaster
Ich habe mit der Kartendarstellung ein bisschen gespielt, aber leider keine Hybrid-Darstellung gefunden. Falls da noch einer eine Möglichkeit kennt.
 

JamesDoe

Geomaster
Ich bin gerade dabei das Script noch etwas zu überarbeiten.

Ein paar kleine "Fehler" beseitigen.

Konfiguration per User-Form

Alte Funktion Googlemaps wieder integriert.
 
Funktioniert wunderbar. Nach HTML Export benutze ich SunriseXP um den HTML zu konvertieren damit mein Palm lesen kann mittels plucker. SunriseXP spidert dann auch von Google nachdem ich den Filter gesetzt habe.
 
Oben