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