Strassenkarte anzeigen via Url

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Strassenkarte anzeigen via Url

Beitrag von hjbremer »

Da ich von Javascript keine Ahnung habe, aber trotzdem eine Strassenkarte haben wollte, habe ich die Google Static Maps API gefunden. Ist simpel, aber natürlich auch nicht so komfortabel.

Wenn Google die Adresse nicht erkennt, erscheint ein leeres Bild. Ursache ist meist falsche Schreibweise oder Zeichen die nicht akzeptiert werden. Auch Leerzeichen + Großbuchstaben bei den Parametern in der URL werden meist nicht akzeptiert.

Das Containergadget ist dazu da, die Ränder abzuschneiden und den Scrollbalken verschwinden zu lassen.

Code: Alles auswählen

;http://code.google.com/intl/de-DE/apis/maps/documentation/staticmaps/

Enumeration 1
   #mainwindow
   #webgadget 
   #spingadget
   #combogadget
   #stringgadget
   #buttongadget
EndEnumeration

Procedure.s MakeUrl()
   
   Protected adr.s, url.s
      
   adr = Trim(GetGadgetText(#stringgadget))
   adr = ReplaceString(adr, "Ä", "Ae")
   adr = ReplaceString(adr, "Ö", "Oe")
   adr = ReplaceString(adr, "Ü", "Ue")
   adr = ReplaceString(adr, "ä", "ae")
   adr = ReplaceString(adr, "ö", "oe")
   adr = ReplaceString(adr, "ü", "ue")
   adr = ReplaceString(adr, "ß", "ss")
      
   adr = URLEncoder(adr)   ;:Debug adr
   
   url = "http://maps.google.com/maps/api/staticmap"
   url + "?center=" + adr
   url + "&size=460x460"
   url + "&maptype=" + LCase(Trim(GetGadgetText(#combogadget)))
   url + "&sensor=false"
   url + "&markers=size:mid|color:blue|label:S|" + adr
   url + "&zoom=" + Str(GetGadgetState(#spingadget))                        
   
  ProcedureReturn url  
EndProcedure

OpenWindow(#mainwindow, 0, 0, 488, 518, "GoogleMap-Test", #PB_Window_ScreenCentered|#PB_Window_SystemMenu)
ContainerGadget(#PB_Any, 10, 10, 468, 468, #PB_Container_Double)  
   WebGadget(#webgadget, -8, -13, 500, 500, "")
CloseGadgetList()

ComboBoxGadget(#combogadget, 10, 488, 80, 20)  
   AddGadgetItem(#combogadget, -1," Roadmap")
   AddGadgetItem(#combogadget, -1," Satellite")
   AddGadgetItem(#combogadget, -1," Hybrid")
   AddGadgetItem(#combogadget, -1," Terrain")
   SetGadgetState(#combogadget, 0)
   
StringGadget(#stringgadget, 100, 488, 298, 20, "Neumünster Mühlenhof 5")     

ButtonGadget(#buttongadget, 408, 488, 30, 20, "Go") 

SpinGadget(#spingadget, 448, 488, 30, 20, 1, 21, #PB_Spin_Numeric)  
SetGadgetState(#spingadget, 16)

SetGadgetText(#webgadget, MakeUrl())

AddKeyboardShortcut(#mainwindow, #PB_Shortcut_Return, #buttonGadget)


Repeat      
   event = WaitWindowEvent() 
   
   Select EventWindow()
                  
      Case #mainwindow
         
         Select event               
               
            Case #PB_Event_Gadget, #PB_Event_Menu
         
               Select EventGadget()
            
                  Case #spingadget                  
                     If EventType() = #PB_EventType_Change
                        SetGadgetText(#webgadget, MakeUrl()) 
                     EndIf                    

                  Case #combogadget
                     If EventType() = #PB_EventType_TitleChange
                        SetGadgetText(#webgadget, MakeUrl()) 
                     EndIf
                  
                  Case #buttonGadget
                     SetGadgetText(#webgadget, MakeUrl())
                 
               EndSelect
               
         EndSelect        
   EndSelect
   
Until event = #PB_Event_CloseWindow 
   
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Strassenkarte anzeigen via Url

Beitrag von ts-soft »

:allright:

Beim ComboGadget haste einen Flüchtigkeitsfehler, der EventType ist falsch!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
hjbremer
Beiträge: 822
Registriert: 27.02.2006 22:30
Computerausstattung: von gestern
Wohnort: Neumünster

Re: Strassenkarte anzeigen via Url

Beitrag von hjbremer »

Nee, eigentlich gibt es laut Hilfe gar kein Eventtype, aber es gibt doch eins und zwar 1 und das ist Titlechange
Purebasic 5.70 x86 5.72 X 64 - Windows 10

Der Computer hat dem menschlichen Gehirn gegenüber nur einen Vorteil: Er wird benutzt
grüße hjbremer
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Strassenkarte anzeigen via Url

Beitrag von ts-soft »

Okay, hab den Fehler gefunden, das funktioniert so in 4.60 nicht mehr!
Da braucht er dann wieder #PB_EventType_Change :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
rolaf
Beiträge: 3843
Registriert: 10.03.2005 14:01

Re: Strassenkarte anzeigen via Url

Beitrag von rolaf »

Hey, klasse das. :allright:
:::: WIN 10 :: PB 5.73 :: (x64) ::::
Benutzeravatar
kwai chang caine
Beiträge: 57
Registriert: 29.11.2007 14:30

Re: Strassenkarte anzeigen via Url

Beitrag von kwai chang caine »

Auch Arbeiten hinter einem Proxy
Vielen Dank :bounce:
Trotz all meiner Bemühungen.
Ich werde nie sprechen Deutsch

Dann ist das "google", das ist für mich
Danke
Antworten