Gambas France BETA


Pas de compte ? Incription

gb.map est enfin sorti du mode expérimental

Ce sujet est résolu.

1
AuteurMessages
gambix#1 Posté le 18/12/2014 à 17:56:11
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.
Jack#2 Posté le 18/12/2014 à 18:06:44
C'est tout bon tout ça
j'espère que maintenant on va voir plein d'applications utilisant ton composant.

Je pourrai en faire quoi dans mon erp ?
Pour un code démocratique nationalisons Gambas.
gambix#3 Posté le 18/12/2014 à 21:43:25
Faire simple !
Je pourrai en faire quoi dans mon erp ?


De la localisation ? Genre sur l'écran client avoir une mini carte statique ou même dynamique.
Je te conseille l'utilisaton du cache pour péréniser le contenu.



Moins de texte dans une signature c'est agrandir son espace.
Jack#4 Posté le 18/12/2014 à 22:14:29
Aujourd'hui je fais :

1
2
3
4
5
adr1 = Replace$(Adresse1.text, " ", "+")
adr2 = Replace$(Adresse2.text, " ", "+")
burd = Replace$(burdist.text, " ", "+")
pys = Replace$(pays.text, " ", "+")
EXEC ["xdg-open", "[url=http://maps.google.fr/maps?near=]http://maps.google.fr/maps?near=[/url]" & adr1 & "+" & Adr2 & "+" & cp.text & "+" & burd & "+" & pys]


ca me plairait bien d'évincer google. Je vais regarder ça de plus près.
Pour un code démocratique nationalisons Gambas.
Jack#5 Posté le 18/12/2014 à 22:17:30
je viens de te relire et je m'aperçois que j'ai rien compris. Tu utilises google et pas openstreet ?
Pour un code démocratique nationalisons Gambas.
gambix#6 Posté le 18/12/2014 à 23:35:45
Faire simple !On utilise ce qu'on veut :

Openstreet :
1
MapView1.Map.AddTile("OpenStreet", "http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", NULL).Copyright = "OpenStreetMap contributors"



Microsoft VirtualEarth:
1
MapView1.Map.AddTile("Virtual Earth", "[url=http://ecn.dynamic.t]http://ecn.dynamic.t[/url]{s}.tiles.virtualearth.net/comp/ch/{q}?mkt=fr-fr&it=G,VE,BX,L,LA&shading=hill&n=z&cb=1").SubDomains = ["0", "1", "2"]



Libertée quoi.
Moins de texte dans une signature c'est agrandir son espace.
gambix#7 Posté le 18/12/2014 à 23:37:52
Faire simple !POur ce qui de la localisation d'une adresse il doit y avoir des api qui le permettent.. je dois y regarder.
Moins de texte dans une signature c'est agrandir son espace.
gambix#8 Posté le 18/12/2014 à 23:52:06
Faire simple !Trouvé !!

je ferais un billet demain

http://maps.googleapis.com/maps/api/geocode/xml?address=archiac&sensor=false
Moins de texte dans une signature c'est agrandir son espace.
1