Worksheet.nl  

Ga terug   Worksheet.nl > Excel Overig > Downloads



Status bericht: Opgelost
Reageren
 
LinkBack Discussietools Weergave
  #1  
Oud 17 december 2011, 23:31
Junior Member
 
Geregistreerd: 17 december 2011
Berichten: 4
Standaard Code voor google maps werkt weer

Hallo

Ik zit met een zeer vervelende kwestie het zit namelijk zo dat ik tot voor enkele dagen onderstaande functie probleemloos kon gebruiken.

Code:
Function Mobiliteit(o1, n1)
    On Error GoTo Fout
    Dim str1, str2, str3
    With New MSXML2.XMLHTTP
        str1 = o1 ' & "+" & o2 & "+" & o3
        str2 = n1 ' & "+" & n2 & "+" & n3
        .Open "Get", "http://maps.google.be/maps?f=d&source=s_d&saddr=" & str1 & "&daddr=" & str2
        .send
        Do
            DoEvents
        Loop Until .readyState = 4
        str3 = Mid(.responseText, InStr(.responseText, ",distance:") + 11, (InStr(.responseText, ",time:") - 3) - (InStr(.responseText, ",distance:") + 11)) * 1000
        If InStr((InStr(.responseText, "distance:")) * 1, .responseText, " km") = 0 Then
            str3 = Mid(.responseText, InStr(.responseText, ",distance:") + 11, (InStr(.responseText, ",time:") - 3) - (InStr(.responseText, ",distance:") + 11)) ' / 10
        End If
        Mobiliteit = (str3) & " meters"
        .abort
  End With

Exit Function
Fout:
    MsgBox "Kijk adres na "
    Mobiliteit = ""
End Function
deze regel geeft foutmelding 13
str3 = Mid(.responseText, InStr(.responseText, ",distance:") + 11, (InStr(.responseText, ",time:") - 3) - (InStr(.responseText, ",distance:") + 11)) * 1000
en daar er niets is gewijzigd vraag ik me af hoe dat kan

Nu heb ik dit forum al helemaal afgezocht en enkele goede voorbeelden getest onder andere dit
Afstand GoogleMaps & Grootcircel Lat 1Lon(GiMe&SNB) v10.xlsm

dit werkt voor de grootcirkel,lat,lon maar voor de afstand word er niets weergegeven

nu men vraag zijn er bij google maps wijzigen doorgevoerd zodat de code ietsje moet veranderen en zo ja waar zou ik dit moeten aanpassen

mvg johnyRo

Laatst gewijzigd door GiMe; 19 december 2011 om 16:30
Met citaat reageren
Sponsored Links
  #2  
Oud 18 december 2011, 00:35
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

Citaat:
Oorspronkelijk geplaatst door Johnyro Bekijk bericht
nu men vraag zijn er bij google maps wijzigen doorgevoerd
ja, google hanteert door de jaren heen soms een andere opmaak van hun html-code
voor het oog ziet het hetzelfde eruit, achter de schermen is het anders
de code zoekt de gegevens achter de schermen
er moet dus nieuwe code geschreven worden
__________________

Laatst gewijzigd door alphamax; 19 december 2011 om 19:46
Met citaat reageren
  #3  
Oud 18 december 2011, 01:03
trucker10's schermafbeelding
Mega Senior Member
 
Geregistreerd: 12 april 2009
Locatie: Langs de N26 Mechelen - Leuven ( Belgium )
Berichten: 1.653
Standaard

alphamax
In deze topic Afstand google maps
__________________
Ervaring is de optelsom, van alle vergissingen die je hebt begaan.
Vragen over bestaande topics worden privé , niet behandeld ! , hiervoor dient het forum .
Met een voorbeeldje, komen er beslist goede oplossingen
Groeten ,
Daniël
Met citaat reageren
  #4  
Oud 18 december 2011, 10:17
Junior Member
 
Geregistreerd: 17 december 2011
Berichten: 4
Standaard

allereerst sorry voor de fouten wat ik maakte,maar dit is was men eerste keer dat ik hier kwam na het zoeken op "google maps"

waar ik die code vandaan had weet ik niet meer heb ze al een beetje in gebruik

dit "Afstand GoogleMaps & Grootcircel Lat 1Lon(GiMe&SNB) v10.xlsm had" heb ik inderdaad gevonden in de topic die trucker10 vermeld en hiervan werkt alles goed behalve "afstand in km google" geeft geen uitslag en dit is wat ik feitelijk nodig heb

zou de afstand ook eventueel uit "afstand in km op grootcirkel" kunnen worden gehaald,en daar men driehoeksmeetkunde niet echt goed is zou ik willen vragen hoe

groeten,

Johny
Met citaat reageren
  #5  
Oud 18 december 2011, 12:16
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

de code uit het eerste bericht doet alsof het een browser is
daarna worden de gegevens eruit gefilterd
het staat niet altijd vast hoe de gegevens aan de browser worden aangeleverd
dus het filteren gaat niet altijd goed

beter is het te doen alsof je een database bent
je krijgt dan veel minder overbodige informatie
en in een vaste vorm aangeboden
zie Google Maps API Web Services - Google Maps API Web Services - Google Code
__________________

Laatst gewijzigd door alphamax; 19 december 2011 om 19:48
Met citaat reageren
  #6  
Oud 18 december 2011, 13:54
Junior Member
 
Geregistreerd: 17 december 2011
Berichten: 4
Standaard

hallo,

(tenzij je weet hoe je moet zoeken)misschien wil je me verder helpen

groeten ,

Johny
Met citaat reageren
  #7  
Oud 18 december 2011, 20:44
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard Google Maps XML en DOM

vraagt alle gegevens bij google maps op in XML-formaat
deze worden opgeslagen in een DOM-document
dit DOM-document dient dan als een database
met o.a. de functie getElementsByTagName kan je in die database zoeken
het is niet de korste code maar ik denk wel flexibel en solide

plaats de sleep API in Module1, zie AllAPI.net - Your #1 source for using API-functions in Visual Basic!

Code:
Option Explicit

Private Sub CommandButton1_Click()
    'http://code.google.com/intl/nl/apis/maps/documentation/directions/
    'http://www.w3schools.com/dom/default.asp
    Dim avntField As Variant
    Dim iavntField As Long
    Dim lngColumn As Long
    Dim lngLength As Long
    Dim lngRow As Long
    Dim lngRows As Long
    Dim objHTTP As Object
    Dim objRouteLegFirst As Object
    Dim objXML As Object
    Dim strDestination As String
    Dim strField As String
    Dim strOrigin As String
    Dim strStatus As String
    Dim strURL As String
        avntField = Array("start_address", "", "start_location", "lat", "start_location", "lng", "end_address", "", "end_location", "lat", "end_location", "lng", "duration", "", "distance", "")
        Set objHTTP = CreateObject("MSXML2.XMLHTTP")
        Set objXML = CreateObject("MSXML2.DOMDocument")
        With Worksheets(1)
            lngRows = .Range("D" & .Rows.Count).End(xlUp).Row
            If lngRows >= 6 Then
                .Range("D6:K" & lngRows).ClearContents 'wissen
            End If
            lngRows = .Range("A" & .Rows.Count).End(xlUp).Row
            If lngRows >= 6 Then
                For lngRow = 6 To lngRows 'doorloop routes
                    lngColumn = 3 'am2011
                    strOrigin = .Range("A" & lngRow).Value
                    strDestination = .Range("B" & lngRow).Value
                    strURL = "http://maps.googleapis.com/maps/api/directions/xml?origin=" & strOrigin & "&destination=" & strDestination & "&alternatives=false&units=metric&sensor=false"
                    With objHTTP
                        .Open "GET", strURL, False
                        .Send 'routes ophalen en opslaan
                        Do
                            DoEvents
                        Loop Until .readyState = 4
                        Sleep 200
                        If .Status = 200 Then 'foutloos?
                            objXML.Load .responsexml 'routes opslaan
    '                        Open "test.txt" For Output As #1: Print #1, .responsetext: Close #1
                        Else
                            GoTo RouteNext 'fout!
                        End If
                    End With
                    With objXML
                        strStatus = .getElementsByTagName("status")(0).ChildNodes(0).NodetypedValue
                        If strStatus <> "OK" Then 'fout?
                            Worksheets(1).Range("D" & lngRow).Resize(1, 8).Value = "ERROR" 'error
                            GoTo RouteNext 'fout!
                        End If
                        Set objRouteLegFirst = .getElementsByTagName("route")(0).getElementsByTagName("leg")(0) 'eerste route
                    End With
                    With objRouteLegFirst
                        For iavntField = 0 To UBound(avntField) Step 2 'doorloop fields
                            lngLength = .getElementsByTagName(avntField(iavntField)).Length - 1 'vind index laatste element = totalen
                            If avntField(iavntField + 1) <> vbNullString Then 'lat/lng?
                                strField = .getElementsByTagName(avntField(iavntField + 0))(lngLength).getElementsByTagName(avntField(iavntField + 1))(0).ChildNodes(0).NodetypedValue 'ja
                            Else
                                strField = .getElementsByTagName(avntField(iavntField))(lngLength).ChildNodes(0).NodetypedValue 'nee
                            End If
                            lngColumn = lngColumn + 1 'volgende kolom
                            Worksheets(1).Cells(lngRow, lngColumn).Value = strField 'schrijven
                        Next
                    End With
RouteNext:
                Next
            End If
            .Columns("A:K").AutoFit 'autofit
        End With
        Set objHTTP = Nothing
        Set objXML = Nothing
        Set objRouteLegFirst = Nothing
End Sub
Bijgevoegde bestanden
Bestandstype: xls worksheet google maps xml dom.xls‎ (72,0 KB, 66x gelezen)
Bestandstype: xls worksheet google maps xml dom grootcirkel.xls‎ (76,0 KB, 71x gelezen)
__________________

Laatst gewijzigd door alphamax; 19 december 2011 om 20:49
Met citaat reageren
  #8  
Oud 19 december 2011, 16:24
GiMe's schermafbeelding
Super Moderator
 
Geregistreerd: 9 november 2006
Locatie: België
Berichten: 2.595
Standaard

Heb er nog de afstand in KM op de grootcirkel bijgeplaatst.
In de hoop dat deze VBA-code het langer volhoudt dan http://www.worksheet.nl/forumexcel/d...le-maps-8.html verhuist dit topic naar "Downloads" waar het volgens mij thuishoort.
Bedankt Alphamax !

Edit : Zie item #7
__________________
Groet,
GiMe Moderator
Mr.GiMe@worksheet.nl

Alles is relatief en zelfs dat..

Een bijlage (Excelvoorbeeldje met aanduiding van het gewenste resultaat) erbij betekent:
-dat de helper(s) niet de, meestal reeds bestaande, worksheet van de vrager moet(en) overtypen
-geen (ver)gissen mogelijk is bij de interpretatie van het proza
-men reeds kan anticiperen op toekomstige problemen
-veel vlugger tot een oplossing komt

kortom : Het wiel niet opnieuw dient uitgevonden te worden !

Laatst gewijzigd door GiMe; 19 januari 2012 om 13:11
Met citaat reageren
  #9  
Oud 19 december 2011, 18:32
Junior Member
 
Geregistreerd: 17 december 2011
Berichten: 4
Standaard

hallo ,
dit doet precies wat ik in gedachten had.

waarvoor ik iedereen die heeft meegewerkt aan
deze nieuwe code wil bedanken

groeten

Johny
Met citaat reageren
  #10  
Oud 19 december 2011, 20:43
alphamax's schermafbeelding
Mega Senior Member
 
Geregistreerd: 8 april 2008
Locatie: weert
Berichten: 1.674
Standaard

grootcirkel=vogelvlucht=great circle distance="As the crow flies"-distance toegevoegd

zie bericht#7
__________________
Met citaat reageren
Reageren


Discussietools
Weergave

Regels voor berichten
Je mag geen nieuwe discussies starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit
Trackbacks are Aan
Pingbacks are Aan
Refbacks are Aan



Ga terug   Worksheet.nl > Excel Overig > Downloads


LinkBacks (?)
Linkback naar dit onderwerp: http://www.worksheet.nl/forumexcel/downloads/72024-code-voor-google-maps-werkt-weer.html
Geplaatst door Voor Type Datum
OfficeForum &bull; Toon onderwerp - Routeplanner batch in excel Dit onderwerp Refback 29 januari 2012 14:18
OfficeForum &bull; Toon onderwerp - afstand tussen twee postcodes (versie2) door snb werkt niet Dit onderwerp Refback 24 januari 2012 20:33
Office Forum &bull; Toon onderwerp - Routeplanner batch in excel Dit onderwerp Refback 17 januari 2012 17:43
Office Forum &bull; Toon onderwerp - afstand tussen twee postcodes (versie2) door snb werkt niet Dit onderwerp Refback 10 januari 2012 00:04
Office Forum :: Bekijk onderwerp - afstand tussen twee postcodes (versie2) door snb werkt niet Dit onderwerp Refback 2 januari 2012 19:41
Google maps werkt niet goed bij Dit onderwerp Refback 19 december 2011 20:59

Soortgelijke discussies
Discussie Auteur Forum Reacties Laatste bericht
Afstand Google Maps tinus2017 Afgehandelde vragen 10 13 september 2011 21:46
Google maps tijdsberekening werkt niet meer trucker10 Afgehandelde vragen 5 20 juli 2011 00:51
Reisplanner-OV-met-google-maps WiKi Tips en Trics 0 16 maart 2011 07:51
Afstand google maps antonh Afgehandelde vragen 14 24 november 2009 10:35
Google Maps maze00 Afgehandelde vragen 2 13 mei 2008 09:57


Alle tijden zijn GMT +2. Het is nu 23:59.


Forumsoftware: vBulletin®, versie 3.8.7
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.0