Forum | | | | - Seite 1 - |
| Tommy | Eine kurze Recherche zum Thema : Anzeigen von Landkarten mit Google-Maps. Gibt's bereits Erfahrungen mit der Einbindung einer Api dazu ? Ich erfasse Haltestellendaten und möchte die Lage des Punktes durch Übernahme der Orts - und Straßenangaben via Landkarte anzeigen und die Koordinaten dabei übernehmen und in der Datenbank mit ablegen. Große Aufgabe oder gibt es bereits Ähnliches? |
| | | | |
| | | | | - Seite 1 - |
| Thomas Freier | Etwas in der Richtung? [...]
Nachtrag: Mit einer Offlinekarte ? [...] |
| | | | |
| | Tommy | GENAU! webmart.de stellt, wie Google Maps auch, die Karte nach Eingabe der Adresse zur Verfügung. Mein Ziel wäre es, die Adresse vom Programm zu übergeben (Aufruf durch URL?" und die Anzeige der Karte in einem Fenster darzustellen. Ein spezielles Goodie wäre natürlich noch die Übernahme der Koordinaten.... Im Code anbei kann ich zwar - nach Anzeige des Bildes in der aufklappenden Bildanzeige für PNG's und dem Ladebalken für die Seite die Karte in dem Browserfenster sehen, aber der Ablauf ist so unbrauchbar.
Hast Du dazu weiterführende Ideen??
Gruß Tommy
'$I firebird.inc
' Datenbank
' ---------
'var fbDLL& = fbUseDLL("fbclient.dll",0)
'declare hdb& 'Handle der Datenbank
'Deklariere Eingabefelder
'------------------------
'Haltestellenname, Ort, latitude, longitude, Bucht, Buchtlänge, Echtzeitsystem, Funk, IP, Kennung1, Kennung2, Strasse, Nr, PLZ
Declare HST_Name$,HST_Ort$,Latitude$,Longitude$,Bucht$,Buchtlaenge$,Echtzeit$, Funk$, IP$, Kennung1$, Kennung2$, Strasse$, Nr$, PLZ$
Declare HST_Name&,HST_Ort&,Latitude&,Longitude&,Bucht&,Buchtlaenge&,Echtzeit&, Funk&, IP&, Kennung1&, Kennung2&, Strasse&, Nr&, PLZ&
Declare GoogleString$, Webcontrol&
Declare e%,x%,y%,zh%
Declare Save&,Exit&
Def GetSysColor(1) !"USER32","GetSysColor"
Set("SQLColWidth",15)
' Datenbank Verbindung herstellen
'hdb& = fbInit("SYSDBA", "masterkey", "3TSDatabase.fdb" ,0)
x% = 955
y% = 435
zh%= 25
WindowTitle "Haltestelle erfassen"
WindowStyle 48 + 512
Window (%MaxX - x%) / 2,(%MaxY - y%) / 2 - x%,y%
UseFont "Arial",16,0,0,0,0
SetDialogFont 1
CLS GetSyscolor(15)
Create("Text",%HWnd,"Haltestellenname:",10,20,100,20)
HST_Name& = Create("Edit",%HWnd,"",140,20,350,20)
Create("Text",%HWnd,"Strasse/Gasse:",10,20+zh%,100,20)
Strasse& = Create("Edit",%HWnd,"",140,20+zh%,350,20)
Create("Text",%HWnd,"Nr:",500,20+zh%,30,20)
Nr& = Create("Edit",%HWnd,"",550,20+zh%,30,20)
Create("Text",%HWnd,"Ort:",10,20 + zh%*2,75,20)
HST_Ort& = Create("Edit",%HWnd,"",140,20 + zh%*2,200,20)
Create("Text",%HWnd,"Plz:",360,20 + zh%*2,75,20)
Plz& = Create("Edit",%HWnd,"",420,20 + zh%*2,70,20)
Create("Text",%HWnd,"Latitude (Breite) :",10,20 + 3 * zh%,140,20)
Latitude& = Create("Edit",%HWnd,"",140,20 + 3 * zh%,150,20)
Create("Text",%HWnd,"Longitude (Länge):",310,20 + 3 * 25,140,20)
Longitude& = Create("Edit",%HWnd,"",450,20 + 3 * 25,150,20)
'halbfertiges Teil
'GoogleString$="https://maps.googleapis.com/maps/api/staticmap?center=Berkeley,CA&zoom=14&size=400x400&sensor=false"
var h& = @create("htmlWin",%hWnd,"maps.googleapis.com/maps/api/staticmap?center=Berkeley,CA&zoom=14&size=400x400&sensor=false",5,610,10,300,300)
waitinput
|
| | | | |
| | Thomas Freier | In diese Richtung?
'Haltestellenname, Ort, latitude, longitude, Bucht, Buchtlänge, Echtzeitsystem, Funk, IP, Kennung1, Kennung2, Strasse, Nr, PLZ
Declare HST_Name$,HST_Ort$,Latitude$,Longitude$,Bucht$,Buchtlaenge$,Echtzeit$, Funk$, IP$, Kennung1$, Kennung2$, Strasse$, Nr$, PLZ$
Declare HST_Name&,HST_Ort&,Latitude&,Longitude&,Bucht&,Buchtlaenge&,Echtzeit&, Funk&, IP&, Kennung1&, Kennung2&, Strasse&, Nr&, PLZ&
Declare GoogleString$, Webcontrol&
Declare e%,x%,y%,zh%
Declare Save&,Exit&
Def GetSysColor(1) !"USER32","GetSysColor"
Set("SQLColWidth",15)
' Datenbank Verbindung herstellen
'hdb& = fbInit("SYSDBA", "masterkey", "3TSDatabase.fdb" ,0)
x% = 955
y% = 435
zh%= 25
WindowTitle "Haltestelle erfassen"
'WindowStyle 48 + 512
Window (%MaxX - x%) / 2,(%MaxY - y%) / 2 - x%,y%
UseFont "Arial",16,0,0,0,0
SetDialogFont 1
CLS GetSyscolor(15)
Create("Text",%HWnd,"Haltestellenname:",10,20,100,20)
HST_Name& = Create("Edit",%HWnd,"",140,20,350,20)
Create("Text",%HWnd,"Strasse/Gasse:",10,20+zh%,100,20)
Strasse& = Create("Edit",%HWnd,"",140,20+zh%,350,20)
Create("Text",%HWnd,"Nr:",500,20+zh%,30,20)
Nr& = Create("Edit",%HWnd,"",550,20+zh%,30,20)
Create("Text",%HWnd,"Ort:",10,20 + zh%*2,75,20)
HST_Ort& = Create("Edit",%HWnd,"",140,20 + zh%*2,200,20)
Create("Text",%HWnd,"Plz:",360,20 + zh%*2,75,20)
Plz& = Create("Edit",%HWnd,"",420,20 + zh%*2,70,20)
Create("Text",%HWnd,"Latitude (Breite) :",10,20 + 3 * zh%,140,20)
Latitude& = Create("Edit",%HWnd,"",140,20 + 3 * zh%,150,20)
Create("Text",%HWnd,"Longitude (Länge):",310,20 + 3 * 25,140,20)
Longitude& = Create("Edit",%HWnd,"",450,20 + 3 * 25,150,20)
'Kordinaten der Haltestelle sind bekannt
settext Latitude&,"48.13699"
settext Longitude&,"11.5754"
'jetzt die html erzeugen
STANDORT
var h& = @create("htmlWin",%hWnd,$TempDir +"Test.html",5,610,10,300,300)
while 1
waitinput
wend
End
proc STANDORT'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ html erzeugen
assign #2,$TempDir +"Test.html"
rewrite #2
Print #2,"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'"
Print #2,"'https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"
Print #2,"<html xmlns='https://www.w3.org/1999/xhtml' xmlns:v='urn:schemas-microsoft-com:vml'>"
Print #2,"<HEAD>"
Print #2,"<TITLE>Karte</TITLE>"
Print #2,"<style type='text/css'>"
Print #2,"#karte { width: 400px; height: 400px;}"
Print #2,"</style>"
Print #2,"<script type='text/javascript' src='https://maps.google.com/maps/api/js?sensor=false'></script>"
Print #2,"<script type='text/javascript'>"
Print #2,"function initialize() {"
Print #2, " var latlng = new google.maps.LatLng("+gettext$(Latitude&)+", "+gettext$(Longitude&)+");"
Print #2," var myOptions = {"
Print #2," zoom: 18,"
Print #2," center: latlng,"
Print #2," mapTypeId: google.maps.MapTypeId.ROADMAP"
Print #2," };"
Print #2," var map = new google.maps.Map(document.getElementById('karte'), myOptions);"
Print #2," var marker = new google.maps.Marker({"
Print #2," position: latlng,"
Print #2," map: map,"
Print #2," title: 'Hallo Meister."+chr$(092)+chr$(110)+" Ich bin hier!' "
Print #2," });}"
Print #2,"</script>"
Print #2,"</HEAD>"
Print #2,"<body onload='initialize()'>"
Print #2," <div id='karte' ></div>"
Print #2,"</body>"
Print #2,"</html>"
Close #2
endproc
|
| | | | |
| | p.specht
| Gute Idee, bei mir "scriptfehler", was muss ich anpassen? |
| | | XProfan 11Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'... | 25.01.2014 ▲ |
| |
| | Thomas Freier | Könnte der Zeilenumbruch sein
'Hallo Meister."+chr$(092)+chr$(110)+" Ich bin hier!'
Einmal so testen
'Hallo Meister. Ich bin hier!'
|
| | | | |
| | Thomas Freier |
Ich erfasse Haltestellendaten und möchte die Lage des Punktes durch Übernahme der Orts - und Straßenangaben via Landkarte anzeigen und die Koordinaten dabei übernehmen und in der Datenbank mit ablegen.
Datenübernahme vielleicht per drag&drop. Namen aus der Karte sind nicht möglich und müßten nachgetragen werden. Beispiel: [...]
|
| | | | |
| | Tommy | Hallo Thomas!
irgendwie ist meine letzte Antwort untergegangen
Das Script ist ein genialer Ansatz und sollte sich als Problemlöser einsetzen lassen. Allerdings wäre es toll, dein Script laufen zu sehen! Bei mir verabschiedet es sich leider mit einem Scriptfehler (siehe Anhang) Würdest Du da nochmal drüberschauen, bitte? Auch Dein letzter Ansatz ist für meine Aufgabenstellung sehr überlegenswert! Ich würde ja eher umgekehrt dran gehen wollen: Die Adresse eingeben und die Koordianten übernehmen.....
Mit vielen Grüßen aus Wien Tommy
|
| | | | |
| | Thomas Freier | Ich weis nicht wie ich den Fehler finden könnte. Getestet mit FF, Opera, Safari und k-meleon und keine Probleme. Auch nicht über Xprofan. Kann die Einstellung beim eurem IE die Ursache sein? Anbei die Arbeits-html. |
| | | | |
| | Julian Schmidt | Thomas Freier (25.01.14)
Könnte der Zeilenumbruch sein 'Hallo Meister."+chr$(092)+chr$(110)+" Ich bin hier!'
Einmal so testen 'Hallo Meister. Ich bin hier!'
Tatsächlich muss es so heißen.
Print #2," title: 'Hallo Meister"+chr$(092)+chr$(110)+" Ich bin hier!'"
Dann funktioniert es. |
| | | | |
| | Thomas Freier | @Julian, Danke. Ist irgendwie verschütt gegangen als ich hier den Zeilenumbruch nachträglich eingetragen hatte, denn in meiner *.prf war es so enthalten. |
| | | | |
| | Tommy | Funzt! GENIAL! Besten Dank! |
| | | | |
| | | | - Seite 2 - |
| | Thomas Freier | Hier noch ein abgewandelter Script von "Pascal" für Tipfaule. Adressen in die Gridbox, per Doppelklick ins EDIT und mit Drag&Drop ins leere Feld von [...] Nach dem Suchen dann per Drag&Drop lat und lon in die ensprechenden Spalten ziehen.
$H Windows.ph
$H Messages.ph
$H commctrl.ph
usermessages 16
Def GetSysColor(1) !"USER32","GetSysColor"
Def WindowFromPoint(2)!"USER32","WindowFromPoint"
Def GetCursorPos(1) !"USER32","GetCursorPos"
Declare p#,h&,item&
Dim p#,8
declare FORMATETC#:dim FORMATETC#,20
long FORMATETC#,4=0,1,-1,1
struct STGMEDIUM=tymed&,Value&,IUnknown&
declare STGMEDIUM#:dim STGMEDIUM#,STGMEDIUM
proc GetData'-------------------------------------------------GetData
parameters IFace&
var VTable&=long(IFace&,0)
return call(long(VTable&,12),IFace&,FORMATETC#,STGMEDIUM#)
endproc'-------------------------------------------------------------
proc Dummy'-----------------------------------------------------Dummy
return 0'--E_OK
endproc'-------------------------------------------------------------
proc Drop'-------------------------------------------------------Drop
parameters This&,IDataObject&,KeyState&,X&,Y&
long FORMATETC#,0=~CF_HDROP'----------------Format: DropFiles
ifnot GetData(IDataObject&)
var Mem&=~GlobalLock(STGMEDIUM#.Value&)
INSERT stringw$(Mem&,20)
' print "Datei:",stringw$(Mem&,20)
~GlobalUnlock(STGMEDIUM#.Value&)
~GlobalFree(STGMEDIUM#.Value&)
endif
long FORMATETC#,0=~CF_TEXT'-----------------Format: Text
ifnot GetData(IDataObject&)
var Mem&=~GlobalLock(STGMEDIUM#.Value&)
INSERT string$(Mem&,0)
~GlobalUnlock(STGMEDIUM#.Value&)
~GlobalFree(STGMEDIUM#.Value&)
endif
return 0'--E_OK
endproc'-------------------------------------------------------------
Proc INSERT
Parameters Zeile$
var a$=Chr$(13)+Chr$(10)'Zeilenumbruch
GetCursorPos(p#)' Empfänger ist ?
h&=WindowFromPoint(Long(p#,0),Long(p#,4))
~GetCursorPos(HIT#)
~ScreenToClient(Lb&,HIT#)
sendmessage(Lb&,~LVM_HITTEST,0,HIT#)'---------------------Infos über Cursor in Bezug auf Lv
sendmessage(Lb&,~LVM_SUBITEMHITTEST,0,HIT#)
zielx&= HIT#.SubItem&
ziely&= HIT#.Item&
If h&=Lb&
If ziely&=-1
@InsertString(Lb&,0,"|||")
SetText Lb&,0, zielx&, trim$(zeile$)
Else
SetText Lb&,ziely&, zielx&, trim$(zeile$)
EndIf
EndIf
EndProc'-------------------------------------------------------------
'=========================================================================
Cls GetSysColor(15)
SetWindowPos %HWND=0,0-570,310;-1
var Font&=Create("Font","MS Sans Serif",16,0,0,0,0)
SETDIALOGFONT Font&
CreateText(%hwnd,"Ziel:",10,12,90,22)
var edi&=Create("RichEdit",%hwnd,"",100,10,300,22)
var text$ = "Ort;0;350;lat;0;80;lon;0;80"
var Lb& = Create("GridBox", %hwnd, Text$, 0, 10, 44, 540, 190)
SetFont Lb&,Font&
declare IDropTarget#,IDropTarget&
dim IDropTarget#,32'-----------------------IDropTarget-Interface
long IDropTarget#, 0=procaddr("Dummy",2)'--QueryInterface
long IDropTarget#, 4=procaddr("Dummy",1)'--AddRef
long IDropTarget#, 8=procaddr("Dummy",1)'--Release
long IDropTarget#,12=procaddr("Dummy",5)'--DragEnter
long IDropTarget#,16=procaddr("Dummy",5)'--DragOver
long IDropTarget#,20=procaddr("Dummy",1)'--DragLeave
long IDropTarget#,24=procaddr("Drop",5)'---Drop
long IDropTarget#,28=IDropTarget#
IDropTarget&=IDropTarget#+28
external("ole32","OleInitialize",0)
external("ole32","RegisterDragDrop",%hwnd,IDropTarget&)
declare HIT#'------LVHITTESTINFO-Struktur
struct HIT=x&,y&,Flags&,Item&,SubItem&
dim Hit#,HIT
declare ziely&,zielx&
AddString(Lb&,"Geniner Straße 50 Lübeck||")
AddString(Lb&,"Marli Straße 50 Lübeck||")
AddString(Lb&,"Ziegel Straße 50 Lübeck||")
SubClass %hwnd, 1
UserMessages 2000
while 1
waitinput
case %umessage=16:break
If (%umessage = 2000)
text$ = GetText$(Lb&, &uwparam, &ulparam)
settext edi&,text$
Setfocus(edi&)
SendString(edi&,"+({END})")
Endif
endwhile
external("ole32","RevokeDragDrop",%hwnd)
external("ole32","OleUninitialize")
dispose IDropTarget#,FORMATETC#,STGMEDIUM#,p#,hit#
DeleteObject font&
end
SubClassProc
If SubClassMessage(%hWnd, ~WM_NOTIFY)
If Long(&sLParam,8)=-3
item&=Long(&sLParam,12)
If item&<>-1
SendMessage(%hwnd, 2000, item&, Long(&sLParam,16))
EndIf
EndIf
EndIf
EndProc
|
| | | | |
|
AntwortenThemenoptionen | 12.347 Betrachtungen |
ThemeninformationenDieses Thema hat 4 Teilnehmer: |