Bonjour à tous,
Mon programme sous Access affiche des markers sur google.maps dans un objet web (ActiveX) nommé 'wbGeoLoc'.
Les coordonnées sont récupérées via un recordset . Là pas de problème.
Puis pour chaque recordset j'appelle une fonction java 'addMarker' dans une fichier html via Document.parentWindow.execScript.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| Dim aMarkerInfo(4) As String, sScript as string
Dim vTab as variant
Set rdSet = CurrentDb.OpenRecordset(sSQL)
Do While Not rdSet.EOF = True
aMarkerInfo(0) = rdSet![LatUs]
aMarkerInfo(1) = rdSet![LongUS]
aMarkerInfo(2) = rdSet!name
aMarkerInfo(3) = "H"
If Not (IsNull(aMarkerInfo(0)) Or IsNull(aMarkerInfo(1))) Then
sScript = "oMap.addMarker(" & aMarkerInfo & ");"
Me.wbGeoLoc.Document.parentWindow.execScript sScript, csScriptLanguage
End If
rdSet.MoveNext
Loop |
1ère erreur, affecter à la variable sScript la concaténation d'un texte avec la variable aMarkerInfo .
1 2
| sScript = "oMap.addMarker(" & aMarkerInfo & ");"
Me.wbGeoLoc.Document.parentWindow.execScript sScript, csScriptLanguage |
Pas découragé j'ai alors pensé affecter le tableau à un variant qui prend alors la structure du tableau et qui permet de faire la concaténation puis appeler la fonction java comme suit:
1 2 3
| vTab = aMarkerInfo
sScript = "oMap.addMarker(" & vTab & ");"
Me.wbGeoLoc.Document.parentWindow.execScript sScript, csScriptLanguage |
Mais là ou ça coince sec c'est que la fonction appelée dans le fichier html "oMap.addMarker" n’interprète pas le tableau passé en paramètre et adieu mes petits markers.
Pour info, dans le fichier html, la fonction addMarker est déclarée comme suit:
1 2 3 4 5
| oMap.addMarker = function(markerInfo)
{ if (oMap.map)
{ var latlng = new google.maps.LatLng(markerInfo[0],markerInfo[1]);
};
} |
Je vous passe la fonction d'initialisation oMap.init = function() {}. Elle fonctionne parfaitement même si je pense que l'on peut optimiser l'algo.
Merci pour votre aide car je veux éviter le passage fastidieux et à rallonge de tous les paramètres déclarés un à un avec ces fameux triple coma de part et d'autre pour les chaines de caractères.
sScript = "oMap.addMarker(" & psLat & "," & psLong & "," & """" & PrepareTextToMap(psLib) & """" & "," & """" & psType & """" & ");"
Toutes vos solutions, même les plus folles, pour m'éclairer et me sortir des ténèbres sont les bienvenues.
Partager