![]() |
|
|
|||||||
| Registreer | FAQ | Gebruiksaanwijzing forum | Online excel cursus | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
|
|
|
LinkBack | Discussietools | Weergave |
|
#1
|
|||
|
|||
|
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
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 |
| Sponsored Links |
|
#2
|
||||
|
||||
|
Citaat:
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 |
|
#3
|
||||
|
||||
|
__________________
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 |
|
#4
|
|||
|
|||
|
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 |
|
#5
|
||||
|
||||
|
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 |
|
#6
|
|||
|
|||
|
hallo,
(tenzij je weet hoe je moet zoeken)misschien wil je me verder helpen groeten , Johny |
|
#7
|
||||
|
||||
|
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
__________________
Laatst gewijzigd door alphamax; 19 december 2011 om 20:49 |
|
#8
|
||||
|
||||
|
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 |
|
#9
|
|||
|
|||
|
hallo ,
dit doet precies wat ik in gedachten had. waarvoor ik iedereen die heeft meegewerkt aan deze nieuwe code wil bedanken groeten Johny |
|
#10
|
||||
|
||||
|
grootcirkel=vogelvlucht=great circle distance="As the crow flies"-distance toegevoegd
zie bericht#7
__________________
|
![]() |
| Discussietools | |
| Weergave | |
|
|
|
|||||||
| Registreer | FAQ | Gebruiksaanwijzing forum | Online excel cursus | Zoeken | Berichten van vandaag | Markeer forums als gelezen |
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 • Toon onderwerp - Routeplanner batch in excel | Dit onderwerp | Refback | 29 januari 2012 14:18 | |
| OfficeForum • Toon onderwerp - afstand tussen twee postcodes (versie2) door snb werkt niet | Dit onderwerp | Refback | 24 januari 2012 20:33 | |
| Office Forum • Toon onderwerp - Routeplanner batch in excel | Dit onderwerp | Refback | 17 januari 2012 17:43 | |
| Office Forum • 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 |