Immer noch die Frage "wer hat schuld an diesem grausligen Wetter ?"
WICHTIG. Im IE ist ActivX zumindest auf bestätigen zu stellen, sonst funktioniert das Speichern von Adressen nicht !!!
Das Beispiel ist als Stand-Alone Programm gedacht, kann aber auch irgendwo eingebaut werden mit kleinen Änderungen.
GoogleMapClipboard() dient dazu bei Adressen, die man irgendwo mit Strg+C kopiert hat, den Zeilenumbruch zu entfernen, damit man diese mit Strg+V einfügen kann.
GoogleMapWebGadgetKeys() ermöglicht überhaupt erst Strg+C etc im Webgadget.
MainProgramm:
Code: Alles auswählen
Enumeration 1   
   #mapwindow
   #mapcontainer
   #mapwebgadget    
EndEnumeration
Procedure.s GoogleMapMakeHtmlCode()
   
   Protected html.s
   Protected *c.character
      
   ;Null Char im Memory zwischen Datazeilen gegen Return tauschen
   For *c = ?MapLabel To ?MapLabelEnd
      If *c\c = 0           
         *c\c = 13            
      EndIf   
   Next
   
   ;Script laden
   html = PeekS(?MapLabel, ?MapLabelEnd - ?MapLabel)
   
   ProcedureReturn html  
   
EndProcedure
Procedure.i GoogleMapGadgetsResize()
   
   Shared mapwinbr, mapwinhh
   
   mapwinbr = WindowWidth(#mapwindow)
   mapwinhh = WindowHeight(#mapwindow)
   
   ResizeGadget(#mapcontainer, #PB_Ignore, #PB_Ignore, mapwinbr, mapwinhh)
   ResizeGadget(#mapwebgadget, #PB_Ignore, #PB_Ignore, mapwinbr, mapwinhh)
   
EndProcedure
Procedure.i GoogleMap()
   
   Shared mapwinbr, mapwinhh
   
   If Not mapwinbr 
      mapwinbr = 550
      mapwinhh = 500
   EndIf
      
   Protected flags = #PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_SizeGadget
   
   OpenWindow(#mapwindow, 0, 0, mapwinbr, mapwinhh, "GoogleMap Api v3", flags)
   WindowBounds(#mapwindow, 550, 440, #PB_Ignore, #PB_Ignore)
   ;StickyWindow(#mapwindow, 1) 
   ContainerGadget(#mapcontainer, 0, 0, 0, 0, #PB_Container_BorderLess)  
      WebGadget(#mapwebgadget, 0, 0, 0, 0, "")
      ;browser.IWebBrowser2 = GetWindowLongPtr_(GadgetID(#mapwebgadget), #GWL_USERDATA)  
      ;If browser: browser\put_Silent(#True): EndIf
   CloseGadgetList()
   SetGadgetItemText(#mapwebgadget, #PB_Web_HtmlCode, GoogleMapMakeHtmlCode())
   
   GoogleMapGadgetsResize()
   
EndProcedure
Procedure.i GoogleMapClipboard()
   Protected clip.s = GetClipboardText()
   If clip
      If FindString(clip, #CRLF$, 1)
         clip = ReplaceString(clip, #CRLF$, " ")
         SetClipboardText(clip)
      EndIf
   EndIf  
EndProcedure
Procedure.i GoogleMapWebGadgetKeys(pbnr)
Select EventwParam()
  Case #VK_C, #VK_V, #VK_DELETE  
     CoInitialize_(0) 
     CoCreateInstance_(?CLSID_IOleInPlaceActiveObject, 0, 1, ?IID_IOleInPlaceActiveObject,@OleObject.IOleInPlaceActiveObject) 
     WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(pbnr), #GWL_USERDATA) 
     WebObject\QueryInterface(?IID_IOleInPlaceActiveObject, @OleObject) 
     web.MSG
     web\message = #WM_KEYDOWN 
     web\wParam  = EventwParam() 
     web\lParam  = EventlParam() 
     OleObject\TranslateAccelerator(@web) 
     OleObject\Release() 
     CoUninitialize_() 
EndSelect
DataSection 
;{00000117-0000-0000-C000-000000000046} 
IID_IOleInPlaceActiveObject: 
Data.l $00000117 
Data.w $0000, $0000 
Data.b $C0, $00, $00, $00, $00, $00, $00, $46 
;{00000320-0000-0000-C000-000000000046} 
CLSID_IOleInPlaceActiveObject: 
Data.l $00000320 
Data.w $0000, $0000 
Data.b $C0, $00, $00, $00, $00, $00, $00, $46 
EndDataSection
EndProcedure
Procedure Main()
   
   Protected event
   
   GoogleMap() 
   Repeat : event = WaitWindowEvent()
      If EventWindow() = #mapwindow
         
         Select event
            Case #WM_EXITSIZEMOVE, #PB_Event_MaximizeWindow
               GoogleMapGadgetsResize()
               
            Case #WM_RBUTTONDOWN    ;für PopUp im Inputfeld
               GoogleMapClipboard()
               
            Case #WM_KEYDOWN                
               GoogleMapClipboard()
               GoogleMapWebGadgetKeys(#mapwebgadget)
               
            Case #PB_Event_Gadget
               SetWindowTitle(#mapwindow, GetGadgetItemText(#mapwebgadget, #PB_Web_PageTitle))
               
         EndSelect
         
      EndIf
   Until event = #PB_Event_CloseWindow
EndProcedure
Main()
DataSection
   MapLabel:   
      IncludeFile "html.pbi"
   MapLabelEnd:
EndDataSection 
Code: Alles auswählen
   Data.s "<html>"
   Data.s "<head>"
   Data.s "<noscript>JavaScript nicht aktiviert</noscript>"
   Data.s ""
   Data.s "<meta name='viewport' content='initial-scale=1.0, user-scalable=no'/>"
   Data.s "<meta http-equiv='content-type' content='text/html; charset=UTF-8'/>"
   Data.s ""
   Data.s "<title>Google Maps JavaScript API v3</title>"
   Data.s "<script type='text/javascript' src='http://maps.googleapis.com/maps/api/js?sensor=false'></script>"
   Data.s ""
   Data.s "<script type='text/javascript'>"
   Data.s ""
   Data.s "   // globale Variablen !!"
   Data.s "   var geocoder"
   Data.s "   var map"
   Data.s "   var marker"
   Data.s "   var markersarray = []"
   Data.s "   var startaddress = 'Hamburg Rathaus'"
   Data.s "   var windowtitle = 'by HJBremer v3.62 - '"
   Data.s "   var trafficlayer"
   Data.s "   var trafficflag = 0"
   Data.s "   var latlngshowflag = 0"
   Data.s "   var killinglisteflag = 0"
   Data.s "   var adressendateiname = 'googlemap.adr'"
   Data.s ""
   Data.s "   function Initialize() {"
   Data.s "         geocoder = new google.maps.Geocoder()     // geocoder Object definieren"
   Data.s "         var latlng                                // oder var latlng = new google.maps.LatLng(-34.397, 150.644)"
   Data.s "         var myOptions = { zoom: 15,               // latlng muß in Initialize definiert werden, sonst geht nix"
   Data.s "                           center: latlng,"
   Data.s "                           mapTypeControl: true, mapTypeControlOptions: {position: google.maps.ControlPosition.TOP},"
   Data.s "                           scaleControl: true, scaleControlOptions: {position: google.maps.ControlPosition.TOP_LEFT},"
   Data.s "                           panControl: false,"
   Data.s "                           mapTypeId: google.maps.MapTypeId.ROADMAP"
   Data.s "                        }"
   Data.s "         map = new google.maps.Map(document.getElementById('map_canvas'), myOptions)"
   Data.s "         trafficlayer = new google.maps.TrafficLayer()"
   Data.s ""
   Data.s "         google.maps.event.addListener(map, 'click', function(event) { LatLngAnzeigen(event.latLng) })"
   Data.s ""
   Data.s "         HoleAdresse()"
   Data.s "      }"
   Data.s ""
   Data.s "   function HoleAdresse() { Geocoding(document.getElementById('addressfeld').value, 0) }  // Kurzform für GeoCodingaufruf"
   Data.s ""
   Data.s "   function Geocoding(adr, flag) {"
   Data.s "         if (adr == '') {adr = startaddress; document.getElementById('addressfeld').value = startaddress}"
   Data.s "         window.document.title = windowtitle + adr"
   Data.s "         geocoder.geocode( { 'address': adr }, function(results, status) {"
   Data.s "               if (status == google.maps.GeocoderStatus.OK)"
   Data.s "                  { // geolocation ist latlng"
   Data.s "                   var geolocation = results[0].geometry.location; map.setCenter(geolocation)"
   Data.s "                   var markertext = adr + '\n' + geolocation"
   Data.s "                   marker = new google.maps.Marker("
   Data.s "                       { animation: google.maps.Animation.DROP, map: map, position: geolocation, title: markertext })"
   Data.s "                   markersarray.push(marker)"
   Data.s "                   HistoryAddItem(adr, markersarray.length)"
   Data.s "                   if ( flag ) { document.getElementById('addressfeld').value = results[0].formatted_address }"
   Data.s "                  }"
   Data.s "               else"
   Data.s "                  { alert('google.maps.Geocoder kann Eingabe nicht zuordnen: \n \n Fehlercode:' + status) }"
   Data.s "            })"
   Data.s "      }"
   Data.s ""
   Data.s "   function MarkerLoeschen() {"
   Data.s "         if (markersarray) { for (i in markersarray) { markersarray[i].setMap(null) }; markersarray.length = 0 }"
   Data.s "      }"
   Data.s ""
   Data.s "   function OptionOnOff() {"
   Data.s "         var status = form.optionsliste.style.visibility"
   Data.s ""
   Data.s "         if ( status == 'hidden' ) {"
   Data.s "              document.getElementById('listen').style.display='block'"
   Data.s "              form.optionsliste.style.visibility = 'visible'"
   Data.s "              form.optionsbutton.value = 'Diverses Aus'"
   Data.s "            }"
   Data.s "         else {"
   Data.s "              document.getElementById('listen').style.display='none'"
   Data.s "              form.optionsbutton.value = 'Diverses'"
   Data.s "              form.optionsliste.style.visibility = 'hidden'"
   Data.s "              form.friendsliste.style.visibility = 'hidden'"
   Data.s "              form.historyliste.style.visibility = 'hidden'"
   Data.s "              form.killingliste.style.visibility = 'hidden'"
   Data.s "            }"
   Data.s "      }"
   Data.s ""
   Data.s "   function OptionslisteSelect() {"
   Data.s "         var farbe = 'black'"
   Data.s "         var idx = form.optionsliste.selectedIndex"
   Data.s "         var txt = form.optionsliste.options[idx].text"
   Data.s ""
   Data.s "         if ( txt == 'Drucken' ) { window.print() }"
   Data.s ""
   Data.s "         if ( txt == 'Marker' ) { MarkerLoeschen() }"
   Data.s ""
   Data.s "         if ( txt == 'GeoCode' ) {"
   Data.s "               if ( latlngshowflag == 0 ) { latlngshowflag = 1; farbe = 'blue'; }"
   Data.s "               else { latlngshowflag = 0; }"
   Data.s "               form.optionsliste.options[idx].style.color = farbe"
   Data.s "            }"
   Data.s ""
   Data.s "         if ( txt == 'Verkehr' ) {"
   Data.s "               if ( trafficflag == 0 ) { trafficflag = 1; trafficlayer.setMap(map); farbe = 'green'; }"
   Data.s "               else { trafficflag = 0; trafficlayer.setMap(null); }"
   Data.s "               form.optionsliste.options[idx].style.color = farbe"
   Data.s "            }"
   Data.s ""
   Data.s "         if ( txt == 'Adressen' ) {"
   Data.s "               form.killingliste.style.visibility = 'hidden'"
   Data.s "               form.historyliste.style.visibility = 'hidden'"
   Data.s "               if ( form.friendsliste.style.visibility == 'visible' ) { form.friendsliste.style.visibility = 'hidden' }"
   Data.s "               else { form.friendsliste.style.visibility = 'visible'; farbe = 'green' }"
   Data.s "               form.optionsliste.options[idx].style.color = farbe"
   Data.s "            }"
   Data.s ""
   Data.s "         if ( txt == 'History' ) {"
   Data.s "               form.killingliste.style.visibility = 'hidden'"
   Data.s "               form.friendsliste.style.visibility = 'hidden'"
   Data.s "               if ( form.historyliste.style.visibility == 'visible' ) { form.historyliste.style.visibility = 'hidden' }"
   Data.s "               else { form.historyliste.style.visibility = 'visible'; farbe = 'green' }"
   Data.s "               form.optionsliste.options[idx].style.color = farbe"
   Data.s "            }"
   Data.s ""
   Data.s "            form.optionsliste.selectedIndex = -1"
   Data.s "      }"
   Data.s ""
   Data.s "   function FriendslisteSort() {"
   Data.s "         var textarray = new Array()"
   Data.s "         for( i = 0; i < form.friendsliste.length; i++ ) { textarray[i] = form.friendsliste.options[i].text; }"
   Data.s "         textarray.sort()"
   Data.s "         for( i = 0; i < form.friendsliste.length; i++ ) { form.friendsliste.options[i].text = textarray[i]; }"
   Data.s "      }"
   Data.s ""
   Data.s "   function FriendslisteSave() {"
   Data.s "         var text = ''"
   Data.s "         for( i = 0; i < form.friendsliste.length; i++ ) { text = text + form.friendsliste.options[i].text + '\r\n' }"
   Data.s "         TextFile(adressendateiname, 'save', text)"
   Data.s "      }"
   Data.s ""
   Data.s "   function FriendslisteSelect() {"
   Data.s "         var idx = form.friendsliste.selectedIndex"
   Data.s "         var txt = form.friendsliste.options[idx].text"
   Data.s "         var j = 0"
   Data.s "         var text = ''"
   Data.s "         var neuerEintrag"
   Data.s ""
   Data.s ""
   Data.s "         switch (txt) {"
   Data.s "            case '- Adresse hinzufügen -':"
   Data.s "               if ( form.killingliste.style.visibility == 'visible' ) { KillinglisteClose() }"
   Data.s "               text = document.getElementById('addressfeld').value"
   Data.s "               neuerEintrag = new Option(text, 0, false, true)"
   Data.s "               neuerEintrag.style.color = 'red'"
   Data.s "               form.friendsliste.options[form.friendsliste.length] = neuerEintrag  // ans Ende setzen"
   Data.s "               FriendslisteSort()"
   Data.s "               FriendslisteSave()"
   Data.s "               break"
   Data.s ""
   Data.s "            case '- Adressen laden -':"
   Data.s "               if ( form.killingliste.style.visibility == 'visible' ) { KillinglisteClose() }"
   Data.s "               text = TextFile(adressendateiname, 'load')"
   Data.s "               if (text) {"
   Data.s "                  var feld = text.split('\r\n')"
   Data.s "                  form.friendsliste.length = null"
   Data.s "                  for( i = 0; i < feld.length; i++ ) {"
   Data.s "                     if (feld[i].length) {"
   Data.s "                        neuerEintrag = new Option(feld[i], 0, false, true)"
   Data.s "                        neuerEintrag.style.color = 'red'"
   Data.s "                        form.friendsliste.options[j] = neuerEintrag"
   Data.s "                        j ++"
   Data.s "                     }"
   Data.s "                  }"
   Data.s "                  for( i = 0; i < 3; i++ ) { form.friendsliste.options[i].style.color = 'blue' }"
   Data.s "               }"
   Data.s "               break"
   Data.s ""
   Data.s "            case '- Adressen löschen -':"
   Data.s "               if ( form.killingliste.style.visibility == 'visible' ) { KillinglisteClose() }"
   Data.s "               else {"
   Data.s "                  for( i = 3; i < form.friendsliste.length; i++ ) {"
   Data.s "                     text = form.friendsliste.options[i].text"
   Data.s "                     neuerEintrag = new Option(text, 0, false, true)"
   Data.s "                     form.killingliste.options[j] = neuerEintrag"
   Data.s "                     j ++"
   Data.s "                  }"
   Data.s "                  if (form.killingliste.length) {"
   Data.s "                     form.friendsliste.options[idx].style.color = 'green'"
   Data.s "                     form.killingliste.style.visibility = 'visible'"
   Data.s "                  }"
   Data.s "               }"
   Data.s "               break"
   Data.s ""
   Data.s "            default: Geocoding(txt, 1)"
   Data.s "               break"
   Data.s "            }"
   Data.s "         form.friendsliste.selectedIndex = -1"
   Data.s "      }"
   Data.s ""
   Data.s "   function HistorylisteSelect() {"
   Data.s "         var idx = form.historyliste.selectedIndex"
   Data.s "         var text = form.historyliste.options[idx].text"
   Data.s "         var wert = form.historyliste.options[idx].value - 1"
   Data.s "         var latlng = markersarray[wert].getPosition(map)"
   Data.s "         map.setCenter(latlng)"
   Data.s "         geocoder.geocode({'latLng': latlng}, function(results, status)"
   Data.s "            { document.getElementById('addressfeld').value = results[0].formatted_address })"
   Data.s "      }"
   Data.s ""
   Data.s "   function HistoryAddItem(text, wert) {"
   Data.s "         var neuerEintrag = new Option(text, wert, false, true)"
   Data.s "         form.historyliste.options[form.historyliste.length] = neuerEintrag  // ans Ende setzen"
   Data.s "      }"
   Data.s ""
   Data.s "   function KillinglisteSelect() {"
   Data.s "         var idx = form.killingliste.selectedIndex"
   Data.s "         var txt = form.killingliste.options[idx].text"
   Data.s "         form.killingliste.options[idx] = null; killinglisteflag ++"
   Data.s "         if ( form.killingliste.length == 0 ) { KillinglisteClose() }"
   Data.s "         for( i = 3; i < form.friendsliste.length; i++ ) {  // durchsuche friendsliste und entferne Eintrag"
   Data.s "            if ( form.friendsliste.options[i].text == txt ) { form.friendsliste.options[i] = null; break }"
   Data.s "         }"
   Data.s "      }"
   Data.s ""
   Data.s "   function KillinglisteClose() {"
   Data.s "         if ( killinglisteflag ) {"
   Data.s "               ok = confirm('Es wurden Einträge gelöscht: ' + killinglisteflag + '\n\n ok für Adressen speichern')"
   Data.s "               if ( ok ) { FriendslisteSave() }"
   Data.s "            }"
   Data.s "         killinglisteflag = 0"
   Data.s "         form.killingliste.length = null"
   Data.s "         form.killingliste.style.visibility = 'hidden'"
   Data.s "         for( i = 0; i < 3; i++ ) { form.friendsliste.options[i].style.color = 'blue' }"
   Data.s "      }"
   Data.s ""
   Data.s "   function LatLngAnzeigen(latlngwert) {"
   Data.s "         if (latlngshowflag) {"
   Data.s "            var text = 'LatLng : ' + latlngwert + '\n\r\n' // \r ist Zeilenvorschub für Clipboard"
   Data.s "            geocoder.geocode({'latLng': latlngwert}, function(results, status) {"
   Data.s "               if (status == google.maps.GeocoderStatus.OK) {"
   Data.s "                  text += 'Adresse: ' + results[0].formatted_address"
   Data.s "                  if ( confirm(text + '\n\nDaten ins Clipboard kopieren ? (nur IE)') == true ) {"
   Data.s "                     if ( navigator.appName == 'Microsoft Internet Explorer') {window.clipboardData.setData('Text', text)}"
   Data.s "                  }}"
   Data.s "               else { alert('LatLng ist ' + latlngwert +  '\n\n' + 'Statuscode: ' + status) }"
   Data.s "            })"
   Data.s "         }"
   Data.s "      }"
   Data.s ""
   Data.s "   function TextFile(name, flag, text){"
   Data.s ""
   Data.s "         // unter Sicherheit-Stufe anpassen, ActiveX-Steuerelemente + Plugins"
   Data.s "         // ActiveX-Steuerelemente ausführen, die nicht als sicher für Scripting markiert sind: aktivieren !!!"
   Data.s ""
   Data.s "         if (navigator.appName != 'Microsoft Internet Explorer') {   // IE Test"
   Data.s "            // alert('save/load nur im IE')"
   Data.s "            return ''"
   Data.s "         }"
   Data.s ""
   Data.s "         var fso = new ActiveXObject('Scripting.FileSystemObject')"
   Data.s "         var file"
   Data.s "         var filename = fso.GetFolder('.') + ''                      // var filename = 'c:/bremer/test1.txt'"
   Data.s "             filename = filename.replace(/\\/g, '/' ) + '/' + name   // Backslash wird Slash"
   Data.s ""
   Data.s "         if ( flag == 'load' ) {"
   Data.s "            text = ''"
   Data.s "            if ( !(fso.FileExists(filename)) ) { return text}        // nicht vorhanden, abbrechen"
   Data.s "            file = fso.OpenTextFile(filename, 1)                     // öffnen, nur lesen"
   Data.s "            if ( !(file.AtEndOfStream) ) { text = file.ReadAll() }   // nicht leer, Dateiinhalt lesen"
   Data.s "            file.Close()                                             // schliessen"
   Data.s "            return text                                              // Dateiinhalt zurück"
   Data.s "         }"
   Data.s "         else if ( flag == 'save' ) {"
   Data.s "            file = fso.CreateTextFile(filename, true)       // Datei erstellen"
   Data.s "            file.Write(text)                                // Text schreiben"
   Data.s "            file.Close()"
   Data.s "         }"
   Data.s "         delete fso; fso = 0"
   Data.s "      }"
   Data.s ""
   Data.s "</script>"
   Data.s "</head>"
   Data.s ""
   Data.s "<style type='text/css'>"
   Data.s "   .h1{border:solid navy 1px; margin-bottom:1; background-color:#AFDE6B; }"
   Data.s "   .h2{border:solid navy 0px; color:white; font-weight:bold; font-size:12; background-color:#7390D1; width:90; padding:0; }"
   Data.s "</style>"
   Data.s ""
   Data.s "<body style='overflow-x:hidden; overflow-y:hidden; margin:0px; padding:0px' onload='Initialize()' >"
   Data.s "   <!-- form benötigt auf jeden Fall (; return false) -->"
   Data.s "   <form name='form' style='height:100%;  ' action='#' onsubmit='HoleAdresse(); return false'>"
   Data.s "      <div id='map_canvas' style='height:100%; border:solid #DBBFA6 1px'></div>"
   Data.s "      <div align='center' style='position:absolute; bottom:1; width:100%; '>"
   Data.s "         <input type='text'   class='h1' value=''       id='addressfeld' style='width:350; '>"
   Data.s "         <input type='button' class='h1' value='Suchen' id='suchenbutton' onclick='HoleAdresse()'>"
   Data.s "      </div>"
   Data.s ""
   Data.s "      <div style='position:absolute; right:20; top:4; '>"
   Data.s "         <input name='optionsbutton' type='button' class='h2' value='Diverses' style='float:right; clear:right; ' onclick='OptionOnOff()'>"
   Data.s "      </div>"
   Data.s "      <div id='listen' style='position:absolute; right:20; top:24; display:none '>"
   Data.s "         <select name='optionsliste' size='6' style='visibility:hidden; float:right; clear:right; width:90; ' onclick='OptionslisteSelect()'>"
   Data.s "            <option>Drucken"
   Data.s "            <option>Marker"
   Data.s "            <option>GeoCode"
   Data.s "            <option>Verkehr"
   Data.s "            <option>History"
   Data.s "            <option>Adressen"
   Data.s "         </select>"
   Data.s "         <select name='historyliste' style='visibility:hidden; float:right; clear:right;' onchange='HistorylisteSelect()' >"
   Data.s "         </select>"
   Data.s "         <select name='friendsliste' size='9' style='visibility:hidden; float:right; clear:right; margin-top:-22px;' onchange='FriendslisteSelect()' >"
   Data.s "            <option style='color:blue'>- Adresse hinzufügen -</option>"
   Data.s "            <option style='color:blue'>- Adressen laden -</option>"
   Data.s "            <option style='color:blue'>- Adressen löschen -</option>"
   Data.s "         </select>"
   Data.s "         <select name='killingliste' size='5' style='visibility:hidden; float:right; clear:right;' onclick='KillinglisteSelect()' >"
   Data.s "         </select>"
   Data.s "      </div>"
   Data.s ""
   Data.s "   </form>"
   Data.s "   <script type='text/javascript'> document.getElementById('addressfeld').value=startaddress </script>"
   Data.s "</body>"
   Data.s "</html>"
MakeData.pb (macht aus Html die Datazeilen)
Code: Alles auswählen
dat.s = "\Bremer\BeispieleXX\allgemein\Googlemap\test\test1"
dat.s = "\Bremer\BeispieleXX\allgemein\Googlemap\test\new11"
dat.s = "\Bremer\BeispieleXX\allgemein\Googlemap\mapv3-62"
qdat.s = dat + ".html"
zdat.s = "html.pbi"
zeile.s
qdnr = ReadFile(#PB_Any, qdat)
If qdnr
  zdnr = CreateFile(#PB_Any, zdat)
  While Eof(qdnr) = 0
    zeile = ReadString(qdnr)
    For j = 1 To 31
      zeile = ReplaceString(zeile, Chr(j), " ")
    Next
    zeile = RTrim(zeile)
    zeile = ReplaceString(zeile, #DQUOTE$, "'")
    zeile = "   Data.s " + #DQUOTE$ + zeile + #DQUOTE$    
    WriteStringN(zdnr, zeile) ;:Debug zeile
  Wend  
  CloseFile(qdnr)  
  CloseFile(zdnr)  
EndIf
Code: Alles auswählen
<html>
<head>
<noscript>JavaScript nicht aktiviert</noscript>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
   // globale Variablen !!
   var geocoder
   var map
   var marker
   var markersarray = []
   var startaddress = "Hamburg Rathaus"
   var windowtitle = "by HJBremer v3.62 - "
   var trafficlayer
   var trafficflag = 0
   var latlngshowflag = 0
   var killinglisteflag = 0
   var adressendateiname = "googlemap.adr"
   function Initialize() {
         geocoder = new google.maps.Geocoder()     // geocoder Object definieren
         var latlng                                // oder var latlng = new google.maps.LatLng(-34.397, 150.644)
         var myOptions = { zoom: 15,               // latlng muß in Initialize definiert werden, sonst geht nix
                           center: latlng,         
                           mapTypeControl: true, mapTypeControlOptions: {position: google.maps.ControlPosition.TOP},
                           scaleControl: true, scaleControlOptions: {position: google.maps.ControlPosition.TOP_LEFT},
                           panControl: false,
                           mapTypeId: google.maps.MapTypeId.ROADMAP
                        }
         map = new google.maps.Map(document.getElementById("map_canvas"), myOptions)
         trafficlayer = new google.maps.TrafficLayer()
         google.maps.event.addListener(map, 'click', function(event) { LatLngAnzeigen(event.latLng) })
         HoleAdresse()
      }
   function HoleAdresse() { Geocoding(document.getElementById("addressfeld").value, 0) }  // Kurzform für GeoCodingaufruf
   function Geocoding(adr, flag) {
         if (adr == "") {adr = startaddress; document.getElementById("addressfeld").value = startaddress}
         window.document.title = windowtitle + adr
         geocoder.geocode( { 'address': adr }, function(results, status) {
               if (status == google.maps.GeocoderStatus.OK)
                  { // geolocation ist latlng
                   var geolocation = results[0].geometry.location; map.setCenter(geolocation)
                   var markertext = adr + "\n" + geolocation
                   marker = new google.maps.Marker(
                       { animation: google.maps.Animation.DROP, map: map, position: geolocation, title: markertext })
                   markersarray.push(marker)
                   HistoryAddItem(adr, markersarray.length)
                   if ( flag ) { document.getElementById("addressfeld").value = results[0].formatted_address }
                  }
               else
                  { alert("google.maps.Geocoder kann Eingabe nicht zuordnen: \n \n Fehlercode:" + status) }
            })
      }
   function MarkerLoeschen() {
         if (markersarray) { for (i in markersarray) { markersarray[i].setMap(null) }; markersarray.length = 0 }
      }
   function OptionOnOff() {
         var status = form.optionsliste.style.visibility
         if ( status == "hidden" ) {
              document.getElementById("listen").style.display='block'
              form.optionsliste.style.visibility = "visible"
              form.optionsbutton.value = "Diverses Aus"
            }
         else {
              document.getElementById("listen").style.display='none'
              form.optionsbutton.value = "Diverses"
              form.optionsliste.style.visibility = "hidden"
              form.friendsliste.style.visibility = "hidden"
              form.historyliste.style.visibility = "hidden"
              form.killingliste.style.visibility = "hidden"
            }
      }
   function OptionslisteSelect() {
         var farbe = "black"
         var idx = form.optionsliste.selectedIndex
         var txt = form.optionsliste.options[idx].text
         if ( txt == "Drucken" ) { window.print() }
         if ( txt == "Marker" ) { MarkerLoeschen() }
         if ( txt == "GeoCode" ) {
               if ( latlngshowflag == 0 ) { latlngshowflag = 1; farbe = "blue"; }
               else { latlngshowflag = 0; }
               form.optionsliste.options[idx].style.color = farbe
            }
         if ( txt == "Verkehr" ) {
               if ( trafficflag == 0 ) { trafficflag = 1; trafficlayer.setMap(map); farbe = "green"; }
               else { trafficflag = 0; trafficlayer.setMap(null); }
               form.optionsliste.options[idx].style.color = farbe
            }
         if ( txt == "Adressen" ) {
               form.killingliste.style.visibility = "hidden"
               form.historyliste.style.visibility = "hidden"
               if ( form.friendsliste.style.visibility == "visible" ) { form.friendsliste.style.visibility = "hidden" }
               else { form.friendsliste.style.visibility = "visible"; farbe = "green" }
               form.optionsliste.options[idx].style.color = farbe
            }
         if ( txt == "History" ) {
               form.killingliste.style.visibility = "hidden"
               form.friendsliste.style.visibility = "hidden"
               if ( form.historyliste.style.visibility == "visible" ) { form.historyliste.style.visibility = "hidden" }
               else { form.historyliste.style.visibility = "visible"; farbe = "green" }
               form.optionsliste.options[idx].style.color = farbe
            }
            form.optionsliste.selectedIndex = -1
      }
   function FriendslisteSort() {
         var textarray = new Array()
         for( i = 0; i < form.friendsliste.length; i++ ) { textarray[i] = form.friendsliste.options[i].text; }
         textarray.sort()
         for( i = 0; i < form.friendsliste.length; i++ ) { form.friendsliste.options[i].text = textarray[i]; }
      }
      
   function FriendslisteSave() {
         var text = ""
         for( i = 0; i < form.friendsliste.length; i++ ) { text = text + form.friendsliste.options[i].text + "\r\n" }
         TextFile(adressendateiname, "save", text)
      }
      
   function FriendslisteSelect() {
         var idx = form.friendsliste.selectedIndex
         var txt = form.friendsliste.options[idx].text
         var j = 0
         var text = ""
         var neuerEintrag
         
         
         switch (txt) {
            case "- Adresse hinzufügen -":
               if ( form.killingliste.style.visibility == "visible" ) { KillinglisteClose() }
               text = document.getElementById("addressfeld").value
               neuerEintrag = new Option(text, 0, false, true)
               neuerEintrag.style.color = "red"
               form.friendsliste.options[form.friendsliste.length] = neuerEintrag  // ans Ende setzen
               FriendslisteSort()
               FriendslisteSave()
               break
            case "- Adressen laden -":
               if ( form.killingliste.style.visibility == "visible" ) { KillinglisteClose() }
               text = TextFile(adressendateiname, "load")
               if (text) {
                  var feld = text.split("\r\n")
                  form.friendsliste.length = null
                  for( i = 0; i < feld.length; i++ ) { 
                     if (feld[i].length) {
                        neuerEintrag = new Option(feld[i], 0, false, true)
                        neuerEintrag.style.color = "red"
                        form.friendsliste.options[j] = neuerEintrag
                        j ++
                     }
                  }
                  for( i = 0; i < 3; i++ ) { form.friendsliste.options[i].style.color = "blue" }
               }               
               break
            case "- Adressen löschen -":
               if ( form.killingliste.style.visibility == "visible" ) { KillinglisteClose() }
               else {
                  for( i = 3; i < form.friendsliste.length; i++ ) {
                     text = form.friendsliste.options[i].text
                     neuerEintrag = new Option(text, 0, false, true)
                     form.killingliste.options[j] = neuerEintrag
                     j ++
                  }
                  if (form.killingliste.length) { 
                     form.friendsliste.options[idx].style.color = "green"
                     form.killingliste.style.visibility = "visible" 
                  }
               }
               break
            default: Geocoding(txt, 1)
               break
            }
         form.friendsliste.selectedIndex = -1
      }
   function HistorylisteSelect() {
         var idx = form.historyliste.selectedIndex
         var text = form.historyliste.options[idx].text
         var wert = form.historyliste.options[idx].value - 1
         var latlng = markersarray[wert].getPosition(map)
         map.setCenter(latlng)
         geocoder.geocode({'latLng': latlng}, function(results, status)
            { document.getElementById("addressfeld").value = results[0].formatted_address })
      }
   function HistoryAddItem(text, wert) {
         var neuerEintrag = new Option(text, wert, false, true)
         form.historyliste.options[form.historyliste.length] = neuerEintrag  // ans Ende setzen
      }
   function KillinglisteSelect() {
         var idx = form.killingliste.selectedIndex
         var txt = form.killingliste.options[idx].text
         form.killingliste.options[idx] = null; killinglisteflag ++
         if ( form.killingliste.length == 0 ) { KillinglisteClose() }
         for( i = 3; i < form.friendsliste.length; i++ ) {  // durchsuche friendsliste und entferne Eintrag
            if ( form.friendsliste.options[i].text == txt ) { form.friendsliste.options[i] = null; break }
         }
      }
   function KillinglisteClose() {
         if ( killinglisteflag ) { 
               ok = confirm("Es wurden Einträge gelöscht: " + killinglisteflag + "\n\n ok für Adressen speichern")
               if ( ok ) { FriendslisteSave() }               
            }
         killinglisteflag = 0
         form.killingliste.length = null
         form.killingliste.style.visibility = "hidden"
         for( i = 0; i < 3; i++ ) { form.friendsliste.options[i].style.color = "blue" }
      }
   function LatLngAnzeigen(latlngwert) {
         if (latlngshowflag) {
            var text = "LatLng : " + latlngwert + "\n\r\n" // \r ist Zeilenvorschub für Clipboard
            geocoder.geocode({'latLng': latlngwert}, function(results, status) {
               if (status == google.maps.GeocoderStatus.OK) {
                  text += "Adresse: " + results[0].formatted_address
                  if ( confirm(text + "\n\nDaten ins Clipboard kopieren ? (nur IE)") == true ) {
                     if ( navigator.appName == "Microsoft Internet Explorer") {window.clipboardData.setData("Text", text)}
                  }}
               else { alert("LatLng ist " + latlngwert +  "\n\n" + "Statuscode: " + status) }
            })
         }
      }
   function TextFile(name, flag, text){
         // unter Sicherheit-Stufe anpassen, ActiveX-Steuerelemente + Plugins
         // ActiveX-Steuerelemente ausführen, die nicht als sicher für Scripting markiert sind: aktivieren !!!
      
         if (navigator.appName != "Microsoft Internet Explorer") {   // IE Test
            // alert("save/load nur im IE")
            return ""
         }  
         var fso = new ActiveXObject("Scripting.FileSystemObject")
         var file
         var filename = fso.GetFolder(".") + ""                      // var filename = "c:/bremer/test1.txt"
             filename = filename.replace(/\\/g, "/" ) + "/" + name   // Backslash wird Slash
      
         if ( flag == "load" ) {
            text = ""
            if ( !(fso.FileExists(filename)) ) { return text}        // nicht vorhanden, abbrechen
            file = fso.OpenTextFile(filename, 1)                     // öffnen, nur lesen
            if ( !(file.AtEndOfStream) ) { text = file.ReadAll() }   // nicht leer, Dateiinhalt lesen
            file.Close()                                             // schliessen
            return text                                              // Dateiinhalt zurück
         }
         else if ( flag == "save" ) {
            file = fso.CreateTextFile(filename, true)       // Datei erstellen
            file.Write(text)                                // Text schreiben
            file.Close()      
         }
         delete fso; fso = 0   
      }
</script>
</head>
<style type="text/css">
   .h1{border:solid navy 1px; margin-bottom:1; background-color:#AFDE6B; }
   .h2{border:solid navy 0px; color:white; font-weight:bold; font-size:12; background-color:#7390D1; width:90; padding:0; }
</style>
<body style="overflow-x:hidden; overflow-y:hidden; margin:0px; padding:0px" onload="Initialize()" >
   <!-- form benötigt auf jeden Fall (; return false) -->
   <form name="form" style="height:100%;  " action='#' onsubmit='HoleAdresse(); return false'>
      <div id="map_canvas" style="height:100%; border:solid #DBBFA6 1px"></div>
      <div align="center" style="position:absolute; bottom:1; width:100%; ">
         <input type="text"   class="h1" value=""       id="addressfeld" style="width:350; ">
         <input type="button" class="h1" value="Suchen" id="suchenbutton" onclick="HoleAdresse()">
      </div>
      <div style="position:absolute; right:20; top:4; ">
         <input name="optionsbutton" type="button" class="h2" value="Diverses" style="float:right; clear:right; " onclick="OptionOnOff()">
      </div>
      <div id="listen" style="position:absolute; right:20; top:24; display:none ">
         <select name="optionsliste" size="6" style="visibility:hidden; float:right; clear:right; width:90; " onclick="OptionslisteSelect()">
            <option>Drucken
            <option>Marker
            <option>GeoCode
            <option>Verkehr
            <option>History
            <option>Adressen
         </select>
         <select name="historyliste" style="visibility:hidden; float:right; clear:right;" onchange="HistorylisteSelect()" >
         </select>
         <select name="friendsliste" size="9" style="visibility:hidden; float:right; clear:right; margin-top:-22px;" onchange="FriendslisteSelect()" >
            <option style="color:blue">- Adresse hinzufügen -</option>
            <option style="color:blue">- Adressen laden -</option>
            <option style="color:blue">- Adressen löschen -</option>
         </select>
         <select name="killingliste" size="5" style="visibility:hidden; float:right; clear:right;" onclick="KillinglisteSelect()" >
         </select>
      </div>
   </form>
   <script type="text/javascript"> document.getElementById("addressfeld").value=startaddress </script>
</body>
</html>
Immer noch besonders nervig ist das Webgadget. XP-Skin fehlt seit Ewigkeiten. Obwohl der IE eigentlich alles versteht, was Chrome versteht, weigert sich das Webgadget es dem IE gleich zutun. Wer also am Html-code Verbesserungen vornehmen will, möge sich überzeugen, das das Webgadget diese auch akzeptiert.
__________________________________________________
Thread verschoben
Windows>Code, Tipps und Tricks
07.09.2011
RSBasic