Gambas France BETA


Pas de compte ? Incription

gb.map est enfin sorti du mode expérimental !

1
AuteurMessages
gambix#1 Posté le 18/12/2014 à 17:55:07
Faire simple !Salut a tous.

Juste un petit post pour vous informé que mon composant viens tous juste de basculer en "Not Finished but Stable".
Ce qui signifie que l'interface ne devrait plus beaucoup évoluer.

Un petit rappel de ce que sait faire ce composant :

gb.Map c'est 4 classes :

Geo: qui fournit quelques outils de convertions pratiques
Proj: Qui pour l'instant est un frontend a cs2cs (reprojection de données libproj)
Map: Est un agrégateur de tuiles multicouches
MapView: Utilise Map et lui fournit un contexte dynamique.(Manipulation de carte a la googlemap, mappy etc)

POur ajouter un layer ... par exemple une couche google sat :

1
2
3
4
5
6
7
8
9
PUBLIC SUB Form_Open()

'On accède a l'objet map du mapview
MapView1.Map.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "162"]).SubDomains = ["0", "1", "2"]
MapView1.Map.AddTile("GoogleRoad", "https://mts{s}.google.com/vt/lyrs=h@282000000&hl=fr&src=app&expIds=201527&rlbl=1&x={x}&y={y}&z={z}&s=Ga", NULL).SubDomains = ["0", "1", "2"]
MapView1.Map.AddShape("Parc")
MapView1.Map["Parc"].AddPoint("Archiac", MapPoint(45.522586, -0.300929))

END


Là ça ajoute une couche Google map + la couche route et noms de communes + une couche shape contenant un pointeur qui vise mon village.


Vous pouvez aussi utiliser map pour avoir une image static.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PRIVATE hMap AS NEW map


PUBLIC SUB _New()

'On accède a l'objet map du mapview
hMap.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "162"]).SubDomains = ["0", "1", "2"]
MapView1.Map.AddTile("GoogleRoad", "https://mts{s}.google.com/vt/lyrs=h@282000000&hl=fr&src=app&expIds=201527&rlbl=1&x={x}&y={y}&z={z}&s=Ga", NULL).SubDomains = ["0", "1", "2"]
hMap.AddShape("Parc")
hMap["Parc"].AddPoint("Archiac", MapPoint(45.522586, -0.300929))

hMap.Center = hMap["Parc"]["Archiac"]

END

PUBLIC SUB DrawingArea_Draw()
hMap.Width = Paint.Width
hMap.Height = Paint.Height
hMap.Draw()

END



Vous soulignerez j'espère la fluidité... du moins ici c'est très fluide.

Il me reste a ajouter un gestionnaire de cache pour le rafraichissement des images en cache ... Je ne vaus l'avais pas dit ?
:-). gb.map a un cache qui permet de l'utiliser même hors connection ... mais shhht

il suffit de donner un nom de cache comme ici :
hMap.AddTile("GoogleMap", "https://khms{s}.google.fr/kh/v={version}&src=app&x={x}&y={y}&z={z}&s=Galile", ["version": "162"], "MonCache").SubDomains = ["0", "1", "2"]

Ainsi plusieurs application peuvent partager un même cache a condition d'utiliser le même nom.

hMap[layer].ClearCache(10) suprime toutes les images non utilisé depuis 10 jours
hMap[layer].ClearCache() suprime toutes les images du cache


Voila



Moins de texte dans une signature c'est agrandir son espace.