🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.bazy-danych.msaccess
27 messages
27 total messages Started by alex andryt Sat, 22 Aug 2015 20:51
Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136962
Author: alex andryt
Date: Sat, 22 Aug 2015 20:51
128 lines
5964 bytes
'' Mamy IE osadzony w formularzu
'' przycisk 'Command2_Click' uruchamia 2 akcje:
'' 1. Wyświetla IE w formularzu (co przestało działać i nie pomogła zmiana w ustawieniach IE związana z tym, ze teraz GMaps ma https)
'' 2. Wycina z html koordynaty i wstawia do pola tekstowego LongLat (co również przestało działać wraz z wprowadzonymi przez Google zmianami.)

'' Proszę o pomoc w poprawieniu tego kodu ('' Access 2003)

''' wstęp:
Option Compare Database

Private GMAPI_Key As String  
Private appIE As Object    ' Późne wiązanie

''' problematyczny sub do poprawki:

Private Sub Command2_Click()

Dim objBrowser As Object
Set objBrowser = Me.WebBrowser9

        ''' wpisałem formułę If Not IsNull(Forms![NazwaMojegoFormularza]![NazwaPolaWFormularzu]) Then .... End If
        ''' i wyeliminowałem
        ''' Run-time error '94'
        ''' Invalid use of Null
        
        If Not IsNull(Forms![frmMapsGoogle]![Address1]) Then
            NewAddress = Replace(Address1, Chr(32), "+")
        End If
        
        If Not IsNull(Forms![frmMapsGoogle]![Zip]) Then
            NewZip = Replace(Zip, Chr(32), "+")
        End If
      
        If Not IsNull(Forms![frmMapsGoogle]![City]) Then
            NewCity = Replace(City, Chr(32), "+")
        End If
        
        If Not IsNull(Forms![frmMapsGoogle]![City]) Then
            NewCountry = Replace(Country, Chr(32), "+")
        End If
        
GMAPI_Key = "ABQIAAAAxH4hZ8E7PyLfMe-tUHrZ3hQ7bGGcDLxcoboTLXbcak2FlPwosxRi4ZromqWgsnzCxPCb43pGk8hreQ"

	''' kiedyś działało:
      MyGoogleMapURL = "http://maps.google.pl/maps?q=" & NewAddress & "+" & NewZip & "+" & NewCity & "+" & NewCountry & "&t=k" & "&z=7" & "&iwloc=A&hl=pl"
		'' nie pomogła zmiana url na:
		'' MyGoogleMapURL = "https://www.google.pl/maps/place/" & NewAddress & "+" & NewZip & "+" & NewCity & "+" & NewCountry & "&t=k" & "&z=7" ' & "&iwloc=A&hl=pl"

slocationdata = NewCountry & "+" & NewZip & "+" & NewCity & "+" & NewAddress

            ''' zamiana polskich znakow w ADRESIE:
            slocationdata = ReplaceCharsToASCII(slocationdata)
            
slocationdata = Trim(slocationdata)
            '  kiedyś działało:
            slocationdata = "http://maps.google.pl/maps/geo?q=" & slocationdata
		'' dzis nie pomogło:
		'' slocationdata = "https://www.google.pl/maps/place/" & slocationdata

slocationdata = slocationdata & "&output=csv&key=%20"
slocationdata = slocationdata & GMAPI_Key

'' ========================================
''.Navigate MyGoogleMapURL
If appIE Is Nothing Then
CreateIEApp
End If
appIE.Navigate slocationdata

    Do While appIE.Busy
    DoEvents
    Loop
    
    On Error Resume Next

    '' do 'geocode' pobieram WYCINKI z html zawierające koordynaty
	'' ale teraz koordynaty są w innym miejscu i proszę o pomoc w ich wskazaniu:

    geocode = appIE.Document.Body.innerHTML
    geocode = Mid(geocode, InStr(geocode, ",") + 3, InStr(geocode, "/") - InStr(geocode, ",") - 4)
'' ========================================     
.. nie wiem po co to poniższe powtórzenie kodu

    slocationdata = NewCountry & "+" & NewZip & "+" & NewCity & "+" & NewAddress
            
            ''' zamiana polskich znaków w ADRESIE
            slocationdata = ReplaceCharsToASCII(slocationdata)
             
    slocationdata = Trim(slocationdata)
    ' kiedyś działało to:
    slocationdata = "http://maps.google.pl/maps?hl=pl&q=" & slocationdata & "&ll=" & geocode & "&iwloc=cent&output=embed" ' gdyby chcieć mapę bez lewego marginesu to "&output=embed&iwloc=near"
    ' zamiana linku na poniższy nie pomogło:
    ' slocationdata = "https://www.google.pl/maps/place/" & slocationdata & "&ll=" & geocode & "&iwloc=cent&output=embed"
'' ========================================

    ''LongLat to pole tekstowe w formularzu, do którego wstawiamy koordynaty - wcześniej je wycieliśmy z html'a

LongLat.Caption = geocode

strMap = slocationdata & geocode

Me.WebBrowser9.Visible = True
		' niestety, ale poniższe ustawienia wcześniej też nie działały. Ani wysokość ani szerokość
		'Me.WebBrowser9.Width = 875
		'Me.WebBrowser9.Height = 700 
Me.WebBrowser9.Navigate strMap

End Sub

''' ________________________________
''' Pozostałe elementy w formularzu:

Private Sub Form_Close()
Me.TimerInterval = 1000
MyAssigned = False
Set objBrowser = Nothing
DoCmd.Hourglass False
End Sub

Private Function CreateIEApp()
''//Create Internet Explorer application Object
   On Error GoTo errHand
    Set appIE = CreateObject("InternetExplorer.Application")
    Exit Function

errHand:
    appIE = Nothing
End Function
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136963
Author: MaciejF
Date: Mon, 24 Aug 2015 11:07
16 lines
1993 bytes
Witaj,
kliknąłem poniższego linka w twoim kodzie:

'' MyGoogleMapURL = "https://www.google.pl/maps/place/" 

i google maps wstawiło koordynatę ze znakiem @ 

https://www.google.pl/maps/@53.0348588,18.6841151,16z

Nie wiem czy twój następujący później string ma taki format.
Może się mądrzę ale jak rozumiem szukasz każdej podpowiedzi.


& NewAddress & "+" & NewZip & "+" & NewCity & "+" & NewCountry & "&t=k" & "&z=7" ' & "&iwloc=A&hl=pl"
 
slocationdata = NewCountry & "+" & NewZip & "+" & NewCity & "+" & NewAddress
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136964
Author: MaciejF
Date: Mon, 24 Aug 2015 11:15
9 lines
1648 bytes
Działa poniższe

https://www.google.pl/maps/place/Toru%C5%84/@53.0120968,18.6102738,11.92z/data=!4m2!3m1!1s0x470334e1d994ec19:0x744a729a586a89c4


Pozdrawiam
/
MF
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136965
Author: MaciejF
Date: Mon, 24 Aug 2015 12:16
5 lines
1716 bytes
Działa też:

https://www.google.pl/maps/place/Bydgoszcz/85-624/Poland

do tego momentu jest dobrze.
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136966
Author: MaciejF
Date: Mon, 24 Aug 2015 12:30
3 lines
1671 bytes
działa też wyszukiwanie po adresie i kodzie pocztowym

https://www.google.pl/maps/place/plac+18+Stycznia+4,+87-100+Toru%C5%84/@53.0118419,18.619767,17z/data=!3m1!4b1!4m2!3m1!1s0x470334dfb2f6546d:0x58f7c7f77ec586e4
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136967
Author: alex andryt
Date: Mon, 24 Aug 2015 15:57
20 lines
2410 bytes
W dniu poniedziałek, 24 sierpnia 2015 14:30:36 UTC+2 użytkownik MaciejF napisał:
> (...)

Maciej,
Jeśli wpiszesz - nawet błędny - Link 'www.google (...) 
do paska przeglądarki bezpośrednio, 
to google 'się dostosuje' i poprawi link w taki sposób,
aby wyświetlić mapę.

Jednak, jeśli wywołuję mapę, aby wyświetlić jej zawartość
w formularzu Accessa (a nie w przeglądarce bezpośrednio),
wówczas mam dwa błędy:
1. Nie widzę oczekiwanej mapy (w moim podformularzu)
2. Nie mogę wyciąć z niej koordynatów (bo prezentowany tu - stary fragment kodu obsługujący Html zwraca niewłaściwą wartość).

Z tego powodu, ufając że ktoś już rozgryzł ten problem, zwróciłem się na forum.
Wiadomo bowiem, że google zmienił, jakiś czas temu, zasady gry.
(Wcześniej tego nie potrzebowałem, ale teraz ... szukam rozwiązań).

W każdym razie, dziękuję za Twoje posty :)
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136968
Author: Maciej Tokarz
Date: Thu, 03 Sep 2015 08:20
34 lines
2340 bytes
A musi być Google?

    http://mactok.blogspot.com/2015/02/blog-post.html

Pozdrawiam,
Maciej


Użytkownik "alex andryt"  napisał w wiadomości grup 
dyskusyjnych:38a8cbb2-3372-42d7-884a-2d759c2871d5@googlegroups.com...

W dniu poniedziałek, 24 sierpnia 2015 14:30:36 UTC+2 użytkownik MaciejF 
napisał:
> (...)

Maciej,
Jeśli wpiszesz - nawet błędny - Link 'www.google (...)
do paska przeglądarki bezpośrednio,
to google 'się dostosuje' i poprawi link w taki sposób,
aby wyświetlić mapę.

Jednak, jeśli wywołuję mapę, aby wyświetlić jej zawartość
w formularzu Accessa (a nie w przeglądarce bezpośrednio),
wówczas mam dwa błędy:
1. Nie widzę oczekiwanej mapy (w moim podformularzu)
2. Nie mogę wyciąć z niej koordynatów (bo prezentowany tu - stary fragment 
kodu obsługujący Html zwraca niewłaściwą wartość).

Z tego powodu, ufając że ktoś już rozgryzł ten problem, zwróciłem się na 
forum.
Wiadomo bowiem, że google zmienił, jakiś czas temu, zasady gry.
(Wcześniej tego nie potrzebowałem, ale teraz ... szukam rozwiązań).

W każdym razie, dziękuję za Twoje posty :) 
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136969
Author: alex andryt
Date: Wed, 09 Sep 2015 15:11
1 lines
1742 bytes
Dziękuję za link do przykładu z alternatywą dla google. Chętnie podejmę próbę z czymś, co stanowi konkurencję dla giganta :) Zapoznam się i dam znać.
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136970
Author: alex andryt
Date: Wed, 09 Sep 2015 15:15
5 lines
1679 bytes
Accdb... 
========

Niestety nie podziałam wiele, bo pracuję na Acc2003,
a rozszerzenie Accdb, zdaje się, jest późniejszą wersją Accessa. Czy się mylę?
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136971
Author: Zbigniew Bratko
Date: Wed, 09 Sep 2015 19:15
16 lines
1625 bytes
W dniu 09-09-2015 o 17:15, alex andryt pisze:
> Accdb...
> ========
>
> Niestety nie podziałam wiele, bo pracuję na Acc2003,
> a rozszerzenie Accdb, zdaje się, jest późniejszą wersją Accessa. Czy się mylę?
>

A próbowałeś pobrać przykładowe pliki?
Bazy są w formacie *.mdb

-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136976
Author: Maciej Tokarz
Date: Thu, 10 Sep 2015 07:36
5 lines
1815 bytes
> Niestety nie podziałam wiele, bo pracuję na Acc2003,
> a rozszerzenie Accdb, zdaje się, jest późniejszą wersją Accessa. Czy się mylę?

Dodałem plik .mdb do paczki.
M.
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136972
Author: Zbigniew Bratko
Date: Thu, 10 Sep 2015 10:10
32 lines
2078 bytes
W dniu 09-09-2015 o 21:15, Zbigniew Bratko pisze:
> W dniu 09-09-2015 o 17:15, alex andryt pisze:
>> Accdb...
>> ========
>>
>> Niestety nie podziałam wiele, bo pracuję na Acc2003,
>> a rozszerzenie Accdb, zdaje się, jest późniejszą wersją Accessa. Czy
>> się mylę?
>>
>
> A próbowałeś pobrać przykładowe pliki?
> Bazy są w formacie *.mdb
>

[...]

Sprostowanie:

Myślałem, że uwaga dot. "accdb" dotyczy przykładowych baz z mojej 
strony: http://www.gps.accdb.pl

NTG. Do Macieja
Wreszcie w czytniku zobaczyłem Twój ostatni post (Macieja T.). Czy coś 
zmieniałeś w ustawieniach, czy też wreszcie  Thunderbird widzi u mnie 
Twoje posty ?


-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136973
Author: Maciej Tokarz
Date: Thu, 10 Sep 2015 10:27
12 lines
2175 bytes
> NTG. Do Macieja
> Wreszcie w czytniku zobaczyłem Twój ostatni post (Macieja T.). Czy coś 
> zmieniałeś w ustawieniach, czy też wreszcie  Thunderbird widzi u mnie 
> Twoje posty ?

Hej! :-)

Jak piszę przez przeglądarkę jest ok. Ale też posługuję się klientem: "Pocztą usługi Windows Live", a tam mam jakiś kulawy serwer zapodany: news.aioe.org. No i jak wysyłam z tegoż klienta to Ty nie widzisz moich wątków. Pewnie coś miesza z nagłówkami ten aioe. Muszę wyszukać jakiś inny adres, znasz?

Serdeczności!
Maciej
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136977
Author: alex andryt
Date: Thu, 10 Sep 2015 19:39
8 lines
2014 bytes
> 
> Dodałem plik .mdb do paczki.
> M.

Dziękuję. Przyglądałem się temu. Fajne.
Masz może jakiś przykład kodu do pobierania odległości z tej mapy,
dla rekordów pobranych z bazy Acc,
i ich zapisywania w tabeli?
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136974
Author: Zbigniew Bratko
Date: Fri, 11 Sep 2015 18:05
21 lines
2180 bytes
W dniu 10-09-2015 o 12:27, Maciej Tokarz pisze:
>
>> NTG. Do Macieja
>> Wreszcie w czytniku zobaczyłem Twój ostatni post (Macieja T.). Czy coś
>> zmieniałeś w ustawieniach, czy też wreszcie  Thunderbird widzi u mnie
>> Twoje posty ?
>
> Hej! :-)
>
> Jak piszę przez przeglądarkę jest ok. Ale też posługuję się klientem: "Pocztą usługi Windows Live", a tam mam jakiś kulawy serwer zapodany: news.aioe.org. No i jak wysyłam z tegoż klienta to Ty nie widzisz moich wątków. Pewnie coś miesza z nagłówkami ten aioe. Muszę wyszukać jakiś inny adres, znasz?

Ostatnio zmieniłem Windows 7 na Windows 10. Być może tu jest rozwiązanie 
problemu ???

Ja używam news.atman.pl.

-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136975
Author: Maciej Tokarz
Date: Sat, 12 Sep 2015 04:54
10 lines
2259 bytes
> Ostatnio zmieniłem Windows 7 na Windows 10. Być może tu jest rozwiązanie 
> problemu ???
> 
> Ja używam news.atman.pl.
> 

Dzięki za serwer :). Okazuje się, że ten aioe ma za zadanie maskować autora (nie doczytałem ustawiając go w kliencie) i robił to skutecznie jak widać...
Odnośnie Win 10 jak na razie spotkałem się z problemem synchronizacji na koncie Windows Live gdzie mam podpiętą własną domenę (jeszcze do kwietnia zeszłego roku można to było za free robić). Ale poza tym system spisuje się na +5.

M.
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136978
Author: Maciej Tokarz
Date: Sun, 13 Sep 2015 09:09
6 lines
2111 bytes
Hej!

Przykładów nie mam, ale możliwości jest sporo... Pewnie dało by się wykorzystać np. taki ficzer: http://project-osrm.org/, ale nie wiem jak z Accessem bo od ładnych kilku lat styczności z VBA nie mam - a grupę śledzę z sentymentu :)
No i OpenLayers też ma sporo metod, które można zaimplementować!

M.
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136979
Author: Zbigniew Bratko
Date: Tue, 15 Sep 2015 21:24
63 lines
3419 bytes
W dniu 2015-09-10 o 21:39, alex andryt pisze:
>>
>> Dodałem plik .mdb do paczki.
>> M.
>
> Dziękuję. Przyglądałem się temu. Fajne.
> Masz może jakiś przykład kodu do pobierania odległości z tej mapy,
> dla rekordów pobranych z bazy Acc,
> i ich zapisywania w tabeli?

Czy w bazie masz określone tzw. waypointy.
Jeżeli tak, czy w formie tekstowej, czy też współrzędnych GPS (LonLat)


Można się pobawić z usługą "Google Directions API - request"

Tworzysz przykładowy URL:
http://maps.googleapis.com/maps/api/directions/xml?origin=Krakow&destination=Lublin&waypoints=Kielce|Radom|Pulawy&sensor=false

Pobierasz XML i wyciągasz z niego dane dotyczące długości etapów.

Nie wiem, czy to jest zgodne z zasadami dyktowanymi przez wujka Google, 
patrz:
https://developers.google.com/maps/documentation/directions/usage-limits

ale pobawić się można.
Da się to zrobić.
W kontrolce "Microsoft Web Browser" wyświetlany jest XML, który można 
pobrać, lekko zmodyfikować i da się pobrać odległości.


Obiecujące jest (było):
Direct Routing Request (via GET)

http://wiki.openstreetmap.org/wiki/OpenRouteService#Direct_Routing_Request_.28via_GET.29
ale nie dałem rady z argumentem via=


Najprostsze jest chyba skorzystanie z linku podanego przez Maćka:
http://project-osrm.org/ i dalej:
https://github.com/Project-OSRM/osrm-backend/wiki/Server-api


O ile w Google Directions API możesz się posługiwać polskimi nazwami 
miast, to w pozostałych przykładach musisz podawać współrzędne LonLat 
punktów docelowych i pośrednich.

I chyba Google Directions API jest dokładniejsze i daje większe możliwości.

Przykładowa trasa : z Krakowa do Lublina przez Kielce, Radom, Puławy

Google Directions API: - 310 km
OSRM: - 323 km

Różnica może wynikać z optymalizowania trasy przez GoogleMaps (obwodnica 
miast itp.)


-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136980
Author: alex andryt
Date: Thu, 17 Sep 2015 18:03
27 lines
3351 bytes
W dniu wtorek, 15 września 2015 23:24:18 UTC+2 użytkownik Zbigniew Bratko napisał:
> Czy w bazie masz określone tzw. waypointy.

Fragment kodu, który próbuję 'naprawić' miał za zadanie
pobrać koordynaty na podstawie adresu pocztowego, głównie dla nowych rekordów,
bo prawie wszystkie rekordy w bazie mam już z geokodami.

Waypoint'ów na tym etapie nie wskazuję.

[Chętnie prześlę ten formularz, ale nie wiem, jak tutaj przesyła się załączniki?
(a jeśli nie tu, to może gdzieś indziej. Polecicie coś Panowie?)]

> Jeżeli tak, czy w formie tekstowej, czy też współrzędnych GPS (LonLat)

Long Lat zapisuję jako liczbę i jako tekst, ponieważ na dalszym etapie chciałem
zbudować zapytanie SQL w ACC i jego wynik (drogę pomiędzy punktami) wyświetlać w przeglądarce. I na tym etapie są momenty, w których trzeba wskazać waypoint (LngLat).

Na dalszym etapie chciałbym to rozwijać w wielu kierunkach :)
np.1. pokazanie rekordu na tle kilku punktów docelowych (celem wyboru tego, który 'na oko' jest najkorzystniej położony)
np.2. pokazanie rekordów celem zaplanowania trasy odwiedzin
np.3. pokazanie różnych warstw rekordów pobranych formantu lstLista, tzn.
a) filtruję rekordy w kwerendzie
b) wynik filtracji przeglądam w polu lstLista
c) eksportuję je sobie jako warstwa nr1; 
d) czynność a,b ponawiam i eksportuje jako warstę nr2, itd.

Ale teraz chciałbym też takie coś, co zbudowałeś w przykładzie z wieloma warstwami, które można wyświetlać na mapie poprzez zaznaczenie checkbox'u (ten link zniknął chyba wraz z częścią dyskusji, ale jest super :)
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136981
Author: alex andryt
Date: Thu, 17 Sep 2015 18:17
6 lines
2033 bytes
Sprostowanie:
Przykład, o którym wspomniałem, istnieje i znajduje sią w wątku:
https://groups.google.com/forum/#!topic/pl.comp.bazy-danych.msaccess/rQXSRWQPbaI
Link do niego bezpośredni:
http://gps-test.accdb.pl/
Zgubiłem się w wątkach :)
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136984
Author: Zbigniew Bratko
Date: Fri, 18 Sep 2015 15:42
145 lines
5680 bytes
W dniu 2015-08-22 o 22:51, alex andryt pisze:
> '' Mamy IE osadzony w formularzu
> '' przycisk 'Command2_Click' uruchamia 2 akcje:
> '' 1. Wyświetla IE w formularzu (co przestało działać i nie pomogła zmiana w ustawieniach IE związana z tym, ze teraz GMaps ma https)
> '' 2. Wycina z html koordynaty i wstawia do pola tekstowego LongLat (co również przestało działać wraz z wprowadzonymi przez Google zmianami.)
>
> '' Proszę o pomoc w poprawieniu tego kodu ('' Access 2003)

[ciach]

A może tak bez kontrolki MS Web Browser, korzystając z OpenStreetMap:

Private Type tpAdress
    street As String
    city As String
    county As String
    state As String
    country As String
    postalcode As String
End Type
'____________________________________________________________________
Private Function GetLatLon(tpElements As tpAdress, _
	Optional sDelim As String = ",") As String
Dim oHttp As Object

Dim sResponse As String
Dim sURL As String
Dim sQry  As String

    With tpElements
       If Len(.street) > 0 Then sQry = sQry & .street & ","
       If Len(.city) > 0 Then sQry = sQry & .city & ","
       If Len(.county) > 0 Then sQry = sQry & .county & ","
       If Len(.state) > 0 Then sQry = sQry & .state & ","
       If Len(.country) > 0 Then sQry = sQry & .country & ","
       'If Len(.postalcode) > 0 Then sQry = sQry & .postalcode & ","
    End With

    If Len(sQry) = 0 Then Exit Function

    sQry = Left$(sQry, Len(sQry) - 1)
    sQry = sQry & "&format=xml&polygon=0&addressdetails=0"

    sURL = "http://nominatim.openstreetmap.org/search?q=" & sQry

    Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
       With oHttp
          .Open "GET", sURL
          .send
          sResponse = .responseText
       End With
    Set oHttp = Nothing

Dim lInStrStart As Long
Dim lInStrEnd As Long
Dim sLatRet As String
Dim sLonRet As String
Const cLat As String = "lat='"
Const cLon As String = "lon='"
Const cEnd As String = "' "

'Pobierz Lat:
    lInStrStart = InStr(1, sResponse, cLat, vbTextCompare)
    If lInStrStart = 0 Then Exit Function

    lInStrEnd = InStr(lInStrStart, sResponse, cEnd, vbTextCompare)
    If lInStrEnd = 0 Then Exit Function

    lInStrStart = lInStrStart + Len(cLat)

    sLatRet = Mid$(sResponse, lInStrStart, lInStrEnd - lInStrStart)

'Pobierz Lon:
    lInStrStart = InStr(1, sResponse, cLon, vbTextCompare)
    If lInStrStart = 0 Then Exit Function

    lInStrEnd = InStr(lInStrStart, sResponse, cEnd, vbTextCompare)
    If lInStrEnd = 0 Then Exit Function

    lInStrStart = lInStrStart + Len(cLon)

    sLonRet = Mid$(sResponse, lInStrStart, lInStrEnd - lInStrStart)

    GetLatLon = sLatRet & sDelim & sLonRet

End Function
'________________________________
Private Sub btnLatLon_Click()
Dim tpMyAdress As tpAdress
Dim sLatLon As String

'Im bardziej szczegółowy adres, tym łatwiej o pomyłkę

    With tpMyAdress
       .street = "170 Kornatka"
       .city = "Dobczyce"
       .county = "myślenicki"
       .state = "małopolskie"
       .country = "polska"
       '.postalcode = "xyz" ' chyba na etapie testów
    End With

    sLatLon = GetLatLon(tpMyAdress)

    If Len(sLatLon) > 0 Then
       MsgBox sLatLon
    Else
       MsgBox "Niepowodzenie"
    End If

End Sub


i małe pytanko na koniec.

Czy ktoś potrafi dobrać się do wartości lon i lat z poniższego XML'a,
za pomocą MSXML2.DOMDocument.

Coś w rodzaju:

     'Set xmlNodeList = xmldoc.selectNodes("//searchresults/place")
     'Set myNode = xmldoc.SelectSingleNode("//searchresults/place")

czy coś podobnego.

<?xml version="1.0" encoding="UTF-8" ?>
<searchresults timestamp='Fri, 18 Sep 15 15:33:52 +0000' 
attribution='Data © OpenStreetMap contributors, ODbL 1.0. 
http://www.openstreetmap.org/copyright' querystring='170 
Kornatka,Dobczyce,myślenicki,małopolskie,polska' polygon='false' 
exclude_place_ids='35513053' 
more_url='http://nominatim.openstreetmap.org/search.php?format=xml&amp;exclude_place_ids=35513053&amp;q=170+Kornatka%2CDobczyce%2Cmy%C5%9Blenicki%2Cma%C5%82opolskie%2Cpolska'>
<place place_id='35513053' osm_type='node' osm_id='2823660213' 
place_rank='30' 
boundingbox="49.8480835,49.8481835,20.0808957,20.0809957" 
lat='49.8481335' lon='20.0809457' display_name='170, Kornatka, gmina 
Dobczyce, powiat myślenicki, województwo małopolskie, 32-410, Polska' 
class='place' type='house' importance='0.511'/></searchresults>


-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136982
Author: Zbigniew Bratko
Date: Fri, 18 Sep 2015 16:33
32 lines
2720 bytes
W dniu 2015-09-17 o 20:17, alex andryt pisze:
> Sprostowanie:
> Przykład, o którym wspomniałem, istnieje i znajduje sią w wątku:
> https://groups.google.com/forum/#!topic/pl.comp.bazy-danych.msaccess/rQXSRWQPbaI
> Link do niego bezpośredni:
> http://gps-test.accdb.pl/

Niestety. Ja o tym testowym przykładzie już zapomniałem. Dobrze, że się 
znalazł :-). Robiłem go chyba w 2012 roku i od tego czasu dałem sobie 
spokój.

> Zgubiłem się w wątkach :)
Nie jest tak źle.

Przykład ze strony http://gps-test.accdb.pl/ oparty jest na trasie 
zarejestrowanej przez GPS w pliku *.gpx (składającej się z wielu punktów 
LatLon).
Trasa wyświetlana jest przez bibliotekę OpenLayers ver. 1.4 a obecnie 
jest ver.3.9 i przykłady moje nie działają na wyższych wersjach 
OpenLayers. I nie chce już mi się zgłębiać tajnków  nowej wersji OpenLayers.

Jeżeli będziesz miał problem, to pisz na grupę. Ale nie obiecuję, że Ci 
pomogę, ponieważ z Accessa korzystam już sporadycznie i wyszedłem z wprawy.

Jak nie ja, to są inni. Coś wspólnie może się da zrobić.


-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136983
Author: alex andryt
Date: Sat, 19 Sep 2015 15:04
11 lines
2392 bytes
W dniu piątek, 18 września 2015 17:42:47 UTC+2 użytkownik Zbigniew Bratko napisał:
> A może tak bez kontrolki MS Web Browser, korzystając z OpenStreetMap:

Fajne. Spróbuję to podpiąć.

W dniu piątek, 18 września 2015 18:33:57 UTC+2 użytkownik Zbigniew Bratko napisał:
> Jeżeli będziesz miał problem, to pisz na grupę.

Dziękuję. Będę próbował formułować w miarę konstruktywne pytania żeby nie wyczerpać Waszej cierpliwości :)

Pozdrawiam,
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136985
Author: Zbigniew Bratko
Date: Sun, 20 Sep 2015 20:07
46 lines
2615 bytes
W dniu 2015-09-18 o 17:42, Zbigniew Bratko pisze:

[...]

>
> i małe pytanko na koniec.
>
> Czy ktoś potrafi dobrać się do wartości lon i lat z poniższego XML'a,
> za pomocą MSXML2.DOMDocument.
>
> Coś w rodzaju:
>
>      'Set xmlNodeList = xmldoc.selectNodes("//searchresults/place")
>      'Set myNode = xmldoc.SelectSingleNode("//searchresults/place")
>
> czy coś podobnego.
>
> <?xml version="1.0" encoding="UTF-8" ?>
> <searchresults timestamp='Fri, 18 Sep 15 15:33:52 +0000'
> attribution='Data © OpenStreetMap contributors, ODbL 1.0.
> http://www.openstreetmap.org/copyright' querystring='170
> Kornatka,Dobczyce,myślenicki,małopolskie,polska' polygon='false'
> exclude_place_ids='35513053'
> more_url='http://nominatim.openstreetmap.org/search.php?format=xml&amp;exclude_place_ids=35513053&amp;q=170+Kornatka%2CDobczyce%2Cmy%C5%9Blenicki%2Cma%C5%82opolskie%2Cpolska'>
>
> <place place_id='35513053' osm_type='node' osm_id='2823660213'
> place_rank='30'
> boundingbox="49.8480835,49.8481835,20.0808957,20.0809957"
> lat='49.8481335' lon='20.0809457' display_name='170, Kornatka, gmina
> Dobczyce, powiat myślenicki, województwo małopolskie, 32-410, Polska'
> class='place' type='house' importance='0.511'/></searchresults>
>

odpowiem sam sobie:

sLat = 
xmlDoc.SelectSingleNode("//searchresults/place").Attributes.getNamedItem("lat").Text


I coś mi się chyba z kodowaniem w czytniku podziało ???

-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136986
Author: Maciej Tokarz
Date: Mon, 21 Sep 2015 07:08
11 lines
1518 bytes
odpowiem sam sobie:
sLat = 
xmlDoc.SelectSingleNode("//searchresults/place").Attributes.getNamedItem("lat").Text
I coś mi się chyba z kodowaniem w czytniku podziało ???
>>>

Wszystko dobrze kodujesz :)
Czytnik również...
Wysyłałem do Ciebie maila na access@beztego... doszedł?

Maciej 
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136987
Author: Zbigniew Bratko
Date: Mon, 21 Sep 2015 14:38
42 lines
2408 bytes
W dniu 2015-09-21 o 09:08, Maciej Tokarz pisze:
> odpowiem sam sobie:
> sLat =
> xmlDoc.SelectSingleNode("//searchresults/place").Attributes.getNamedItem("lat").Text
>
> I coś mi się chyba z kodowaniem w czytniku podziało ???
>>>>
>
> Wszystko dobrze kodujesz :)
> Czytnik rĂłwnieĹź...

Tyle tylko, że czytnik raz pokazuje krzaki, a raz dobrze.
Czasami muszę się przełączać na każdym poście.

> Wysyłałem do Ciebie maila na access@beztego... doszedł?

Tak. Doszedł. Trawię go, ale chyba pójdę inną drogą :-)

A co sądzisz o szukaniu punktów poprzez OSM.
Przykładowo:

Szukaj: boisko+Oporowska

http://nominatim.openstreetmap.org/search/stadion+Oporowska,wrocław,pl?format=xml&addressdetails=1


Geocoding reverse LatLon: 51.0961162,16.9967378434332

http://nominatim.openstreetmap.org/reverse?format=xml&lat=51.0961162&lon=16.9967378434332&addressdetails=1

Która Twoim zdaniem jest lepsza
www.mapquest.com czy www.openstreetmap.org.

Moim zdaniem OSM jest bardziej szczegółowa. Porównywałem dla centrum 
Lublina i Bieszczadów. Ale to takie moje pierwsze wrażenie.


-- 
Pozdrowienia
BraZby
www.faq.accdb.pl/
www.acc97.accdb.pl/
Re: Google Maps i VBA Access- pobieranie koordynatów - wyświetlanie mapy w formularzu - kod, który kiedyś działał
#136988
Author: Maciej Tokarz
Date: Mon, 21 Sep 2015 17:19
11 lines
1612 bytes
Która Twoim zdaniem jest lepsza
www.mapquest.com czy www.openstreetmap.org.

Moim zdaniem OSM jest bardziej szczegółowa. Porównywałem dla centrum
Lublina i Bieszczadów. Ale to takie moje pierwsze wrażenie.
>>>

Również moim zdaniem OSM jest o wiele lepszą mapą na pierwszy  rzut oka :)

Pozdrawiam,
Maciej 
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads