Google map object in Access formulier

Status
Niet open voor verdere reacties.

richard99

Gebruiker
Lid geworden
17 apr 2010
Berichten
95
Wie is er bekend met een object Google Maps die in een Access formulier getoond wordt.
Ik heb een lijst, één of meer locatiepunten, met latitudes, longitudes en tijden.
De latitude en longitude zijn de locatiepunt(en) en ideaal is de tijd als label boven het locatiepunt weer te geven.
Ook is het essentieel de schaal kunnen bewerken aangezien er binnen 10 meter, 25 meter, 50 meter, 100 meter en max 250 meter weergegeven moet worden.
Ik gebruik wel Access 2003 en geen 64 bits dus (en upgraden naar 2013 is voor nu geen optie voor de klant).
Ik heb wel vernomen dat dit niet al te ingewikkeld moet zijn en ik hoop dat er iemand is die eerder zo'n oplossing heeft gebouwd.
Mocht er een andere kaarten applicatie zijn dan is dat natuurlijk ook prima maar ik verwacht dat Google Maps marktleider is.
 
Ik doe dat altijd via een Internet Explorer object en een link naar de Google.Maps webpagina. Het Google Maps object ken ik niet.
 
Okay heb jij toevallig voorbeeldcode waar ik een of meer locatiepunten in dat internet explorer object kan meesturen en dat deze dan zichtbaar wordt?
Je help mij hier enorm mee.
Ik ben bekend met het internet explorer object weet alleen niet hoe ik de parameter voor Google Maps kan meesturen zodat deze locatiepunten zichtbaar zijn.
Kan je ook een schaal meesturen?
 
hier twee subjes een voor bing- en de ander voor googlemaps
Code:
Public Function BingMap() As Boolean    On Error GoTo Fout
    Dim smap As String, sUrl As String, sextr As String
    'MsgBox Me.Straat & Me.Hn & " " & Me.Pcstad & Me.Stad & Me.Land
    smap = UrlMapadresBing(Me.Straat, Me.Hn, Me.Pcstad, Me.Stad, Me.Land)
    If Len(smap) > 10 Then
        'With KnBingMap.HyperlinkAddress =
        sUrl = "http://maps.live.com/default.aspx"
        sextr = "where1=" & smap & "&lvl=15&dir=0&sty=r"
        Application.FollowHyperlink sUrl, , False, True, sextr
    Else
        Call PauzeTxtBeep("Te weinig gegevens voor een Bingmap ", 1)
    End If


Exit_fout:
    Exit Function
Fout:
    MsgBox Err.description
    Resume Exit_fout


End Function




Public Function GoogleMap() As Boolean
    On Error GoTo Fout
    Dim mapurl As String
    Dim sUrl As String, sextr
    GoogleMap = False
    mapurl = Trim(UrlMapadres(Me.Straat, Me.Hn, Me.Pcstad, Me.Stad, Me.Land))
    'MsgBox mapurl
    If Len(mapurl) > 10 Then
        'call pauzetxt(mapurl,.5) 'https://maps.google.com/maps?output=classic&dg=ntvb
        'KnGooglemap.HyperlinkAddress = "https://www.google.com/maps?q=" & mapurl
        sUrl = "https://www.google.com/maps?q=" & mapurl
        'KnGooglemap.Hyperlink.Follow
        'KnGooglemap.HyperlinkAddress = "https://www.google.com/maps?q=" & mapurl


        Application.FollowHyperlink sUrl, , False, True, sextr
        GoogleMap = True
    Else
        Beep
        Call PauzeTxtBeep("Te weinig gegevens voor Googlemaps", 0.7)
    End If


Exit_fout:
    Exit Function
Fout:
    MsgBox Err.description
    Resume Exit_fout
End Function

Public Function UrlMapadres(Straat As Variant, Hn As Variant, zip As Variant, Stad As Variant, Land As Variant) As String
Dim mztools As Integer
    On Error GoTo Fout


    Dim hURL As String
    'hURL = "Http://maps.google.com/maps?q="
    hURL = " "
    If Len(Trim(Nz(Straat))) > 0 Then
        Straat = Replace(Straat, " ", "+")
        hURL = hURL & Straat
    End If
    If Len(Trim(Nz(Hn))) > 0 Then
        Hn = Replace(Hn, " ", "+")
        hURL = hURL & "," & Hn
    End If
    If Len(Trim(Nz(zip))) > 0 Then
        zip = Replace(zip, " ", "+")
        hURL = hURL & "," & zip
    End If
    If Len(Trim(Nz(Stad))) > 0 Then
        Stad = Replace(Stad, " ", "+")
        hURL = hURL & "," & Stad
    End If
    If Len(Trim(Nz(Land))) > 0 Then
        Land = Replace(Land, " ", "+")
        hURL = hURL & "," & Land
    End If
    If Left(hURL, 2) = " ," Then hURL = Right(hURL, Len(hURL) - 2)


    UrlMapadres = Trim(hURL)
Uit:
    Exit Function
Fout:
    MsgBox Err.description


End Function


Public Function UrlMapadresBing(Straat As Variant, Hn As Variant, zip As Variant, Stad As Variant, Land As Variant) As String
Dim mztools As Integer
    On Error GoTo Fout
    'mapurl = UrlMapadresBing(Me.Straat, Me.Hn, Me.Pcstad, Me.Stad, Me.Land)


    Dim hURL As String
    'hURL = "Http://maps.google.com/maps?q="
    hURL = ""
    If Land = "USA" Then
        If Len(Trim(Nz(Hn))) > 0 Then
            Hn = Replace(Hn, " ", "%20")
            hURL = hURL & " " & Hn
        End If


        If Len(Trim(Nz(Straat))) > 0 Then
            Straat = Replace(Straat, " ", "%20")
            hURL = hURL & " " & Straat
        End If
    Else


        If Len(Trim(Nz(Straat))) > 0 Then
            Straat = Replace(Straat, " ", "%20")
            hURL = hURL & " " & Straat
        End If


        If Len(Trim(Nz(Hn))) > 0 Then
            Hn = Replace(Hn, " ", "%20")
            hURL = hURL & " " & Hn
        End If
    End If


    If Land <> "usa" Then
        If Len(Trim(Nz(zip))) > 0 Then
            zip = Replace(zip, " ", "%20")
            hURL = hURL & "," & zip
        End If


        If Len(Trim(Nz(Stad))) > 0 Then
            Stad = Replace(Stad, " ", "%20")
            hURL = hURL & " " & Stad
        End If
    Else
        If Len(Trim(Nz(Stad))) > 0 Then
            Stad = Replace(Stad, " ", "%20")
            hURL = hURL & "," & Stad
        End If


        If Len(Trim(Nz(zip))) > 0 Then
            zip = Replace(zip, " ", "%20")
            hURL = hURL & " " & zip
        End If
    End If


    If Len(Trim(Nz(Land))) > 0 Then
        Land = Replace(Land, " ", "%20")
        hURL = hURL & "," & Land
    End If


    'hURL = hURL & "%20 &style=r"
    UrlMapadresBing = Trim(hURL)                      '& "&cid=C8A777871D6A19DF!1401"
    'MsgBox hURL
    'cid=C8A777871D6A19DF!1341&form=LMLTCC
    '&lvl=14&dir=0&sty=r&cid=C8A777871D6A19DF!1341&form=LMLTCC
Uit:
    Exit Function
Fout:
    MsgBox Err.description


End Function

Wellicht heb je er wat aan.

Jan
 
Hoi Jan

Hier had ik veel aan als het om latitude longitude parameters betrof.
Het betreft ruimte (kleine hectare) waar men vaste punten heeft vastgelegd.
Heb jij toevallig code waar je latitude longitude parameters mee kan sturen?
Het zullen meer locatiepunten zijn dus van A naar B en naar C of zelfs een hele parcour kan afgelegd zijn.
Ideaal is dat je op de locatiepunten een label mee kan geven wat een tijd moet zijn.

Als je deze code hebt dan is mijn weekend nu al perfect.
 
Niet om het een of ander, maar volgens mij heb je de code al die je nodig hebt. Al moet je hem misschien een klein beetje aanpassen. Als ik deze code uittest, dan werkt hij:
Code:
        sURL = "http://maps.google.com/?q=43.7920533400153,6.37761393942265"
Dus jouw code wordt dan:
Code:
        t1 = "http://maps.google.com/?q=" & mapURL
Overigens maakt Google er gelijk wat anders van, dus wellicht dat je de string daarop moet aanpassen:
Code:
t2 = "https://www.google.com/maps/place/43%C2%B047'31.4%22N+6%C2%B022'39.4%22E/@43.7920533,6.3754252,17z/data=!3m1!4b1!4m2!3m1!1s0x0:0x0"
 
Beste OctaFish

Ik ben nu al twee uur aan het stoeien maar ik krijg telkens de melding:
U gebruikt een niet-ondersteunde browser.
Oude browsers kunnen uw veiligheid in gevaar brengen, zijn traag en werken niet met nieuwe functies van Google Maps. Update naar een moderne browser voor toegang tot Google Maps.

Ik heb internet explorer 11 draaien en in mijn optiek kan dat het probleem niet zijn.
Ook is internet explorer 11 als standaard browser geïnstalleerd.
Onderstaande is de code die ik gebruik om Google Maps te kunnen weergeven.

sUrl = "http://maps.google.com/?q=51.914488,4.094246"
t2 = "https://www.google.com/maps/place/43%C2%B047'31.4%22N+6%C2%B022'39.4%22E/@43.7920533,6.3754252,17z/data=!3m1!4b1!4m2!3m1!1s0x0:0x0"
Me.WebBrowser.Navigate sUrl

Ik begrijp echt niet waarom ik de webbrowser niet aan de praat krijg.
 
Kun je een voorbeeldje van de db posten? Ik heb geen voorbeeldje liggen momenteel, en geen tijd om er een te maken.
 
Ik weet niet of dit goed gaat maar ik heb even een database aangemaakt met een formulier genaamd: frmWebbrowser.
In de form_load event heb ik de code staan en bij mij krijg ik dat vage browser melding.
Begin al aardig koppijn te krijgen ervan

Bekijk bijlage webbrowser.rar
 
Je kan met https://www.google.com/maps/d/?app=mp&hl=en_US je eigen kaarten maken, je hebt wel een google email account nodig.
Hierin is de mogelijkheid om csv en xlsx bestanden te importeren.
Zie http://www.assortedstuff.com/stuff/layout-a-google-earth-tour-using-maps-engine-lite/ voor uitleg.

Beste Alphamax

Mijn idee is via een tabel met latitude en longitude waarde diverse locatiepunten te kunnen weergeven via een webbrowser in een Access applicatie.
Het betreft een ruimt waar men geregistreerde voertuigen wilt volgen hoe laat men langs een bepaalde detectiepunt is gegaan.
Detectiepunt heeft een latitude en een longitude en de tijd zou ik eigenlijk als label bij locatiepunt erbij willen zien.
Nu weet ik niet of ik excel dan erbij moet nemen want Access doet eigenlijk hetzelfde want dit is een tabel met latitude en longitude waarden.
Ook zou ik de schaal van Google Maps klein willen hebben aangezien het gebied tussen de 100 meter en 250 meter betreft.
Probleem is nu dat ik geen beeld krijg in het webbrowser object en als het goed is zal OctaFish hier naar kijken.
Wellicht kan jij aangeven of ik excel nodig heb voor dit project.
 
Het moet dus een dynamische landkaart worden in access die met de minuut verandert.
Bovendien moeten je kunnen zoomen, pannen en placemarks/labels kunnen lezen.
Klopt dit?
Excel in niet nodig, als het in excel vba lukt dan lukt het ook in access vba, het is maar net waar je data aangeleverd wordt.

Plaats eens een klein anoniem access bestand met wat je nu al hebt.
 
Laatst bewerkt:
Ik heb even snel een tabel met records aangemaakt.
Via de listbox kan je de drie latitudes, longitudes voor betreffende voertuig opvragen.
Deze waarden vul ik in een string.
Los dat de string goed of fout is krijg ik geen beeld in mijn webbrowser.
Bekijk bijlage webbrowser1.rar
Ik heb ook een printscreen gemaakt dat ik mijn browser oud is terwijl dit IE 11 is.
printscreen_probleem.png

De code kon ik uiteraard beter coderen echter voor dit voorbeeld even snel in elkaar gezet,
 
Je zou hier eens kunnen kijken; misschien werkt dat bij jou.
 
Zojuist de registry aangepast zoals www.devhut.net aangeeft maar het probleem blijft zich voordoen.
Onderstaande is de aanpassing in de registry:
printscreen_regedit.jpg

Het bijzondere is dat ik dit probleem op twee verschillende werkstations heb.
De ene is windows 7 op geïnstalleerd en de andere xp.

De laatste versie heb ik ook een tabel met records meegestuurd, ook hieronder:
Bekijk bijlage webbrowser1.rar

Zijn er ook andere webbrowsers beschikbaar om dit probleem te vermijden?
 
Is er überhaupt een goede reden waarom je het zo wilt doen? Zelf gebruik ik de FollowHyperlink, die een apart browservenster opent. Nooit een probleem mee gehad, en ook nooit van welke gebruiker dan ook gehoord dat het in een database formulier moet. Het is, als je het mij vraagt, een luxe probleem dat je makkelijk op deze manier kunt omzeilen. En als een probleem niet bestaat, of alleen in het hoofd van de ontwerper, wat zou je er dan tijd in steken? :D.
 
Haha als programmeur zijnde wil je de mooiste oplossing.
Het is geen grote omgeving en binnen de applicatie de omgeving te weergeven is ideaal.
Zij werken met minimaal 19 inch schermen vandaar.

Ik moet echt bekennen dat VBA en Google Maps voor mij echt helemaal nieuw is.
Heb jij voorbeeldcode zodat ik het via FollowHyperlink kan oplossen.
Ik ben ook al bezig geweest om code te zoeken waar ik twee of meer locatiepunten visueel kan krijgen echter blijf ik steken bij 1 locatiepunt.
Ook zag ik dat je markers kan maken zodat ik de tijden mee kan sturen.
Ik hoop dat je me op weg kan helpen want tot nu toe is vandaag een rampdag.
 
Alleen internetexplorer (microsoft) werkt samen met access (microsoft).
Misschien is het mogelijk om met javascript in de browser de access-database uit te lezen en markers te plaatsen in google maps.
 
Dat begrijp ik, alleen heb ik voorbeeldcode nodig om te kunnen starten.
Een browser openen via Access is niet ingewikkeld echter twee of meer locatiepunten meesturen in de url wel.
Laat staan wat jij voorstelt.
Heb jij voorbeeldcode voor me zodat ik dit in mijn access applicatie kan implementeren.
Resultaat moet zijn dat je een of meer locatiepunten te zien krijgt waar je een label boven een locatiepunt kan plakken.
Ik heb een werkende link met twee locaties:
http://econym.org.uk/gmap/example_p...923400,4.477133&q=My Place@51.923506,4.478415
Echter als ik dit in Google Maps aanpas dan werkt het niet:
https://maps.google.com/?q=Hello world@51.923400,4.477133&q=My Place@51.923506,4.478415
Nogmaals mijn kennis in deze materie in minimaal.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan