Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

GEODATA DAYS 2024

#1 Tue 19 June 2007 14:20

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

[Mapx 5.0 + VB 6] affichage d'un layer ?

bonjour,

j'ai beau parcourir les 2 bouquins qui sont fournis avec MapX et regarder sur les forums, je n'arrive toujours pas à comprendre qq chose qui doit être hyper simple pourtant. J'ai créé un tout petit projet en VB pour tester les différentes fonctionnalités de MapX. Il n'y a qu'une seule form dans laquelle j'ai posé une map. Lorsque la form est chargée, je créé mon .tab qui va bien:

Code:

Private Sub form_load()
    Dim X, Y As Integer
    Dim pt As New Point
    Dim ftrCircle As Feature
    Dim li As New MapXLib.LayerInfo
    Dim ftrs As MapXLib.Features
    Dim ds As MapXLib.Dataset
    
    'création d'un layer
    Set ds = Map1.DataSets.Add(miDataSetLayer, Map1.Layers("World Countries"))
    Set ftrs = Map1.Layers.Item("World Countries").Selection.Clone
    
    li.Type = miLayerInfoTypeNewTable
    li.AddParameter "Name", "alertes"
    li.AddParameter "FileSpec", App.Path & "\test.tab"
    li.AddParameter "Features", ftrs
    li.AddParameter "OverWriteFile", True
    'le layer est créé quand on le rajoute à la collection
    Map1.Layers.Add li
    
    X = Map1.CenterX
    Y = Map1.CenterY
    pt.Set X, Y
    Set ftrCircle = Map1.FeatureFactory.CreateCircularRegion(miCircleTypeScreen, pt, 222)
    Map1.Layers.Item("test").AddFeature ftrCircle
    Map1.Layers.Item("test").Visible = True
End Sub

OK jusque là tout va bien, le .tab est créé et l'affichage du cercle se fait bien. Par contre lorsque je fais :

Code:

Private Sub Map1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim pnt As New MapXLib.Point
    Dim ftr As New MapXLib.Feature
    Dim mx As Double
    Dim my As Double
    
    Map1.ConvertCoord X, Y, mx, my, miScreenToMap
    pnt.Set mx, my
    Set ftr = Map1.FeatureFactory.CreateCircularRegion(miCircleTypeScreen, pnt, 222, Map1.MapUnit)
    Map1.Layers.Item("test").AddFeature ftr
End Sub

cela n'affiche pas le cercle dont le centre est le clic de la souris. En faisant un msgbox des coordonnées, ce sont les bonnes qui s'affichent (j'affiche les screen et les coord map). Alors j'en viens à me demander comment fonctionnent les layers...il ne suffit pas de rajouter le cercle au layer "test" pour qu'il s'affiche ? sad

Hors ligne

 

#2 Tue 19 June 2007 16:10

abdallahi
Participant occasionnel
Lieu: Boutilimitt
Date d'inscription: 8 Jun 2007
Messages: 11

Re: [Mapx 5.0 + VB 6] affichage d'un layer ?

j'ai executé ton code avec map4 mais j'ai un bug dans la ligne

Code:

Map1.Layers.Item("test").AddFeature ftrCircle

Hors ligne

 

#3 Tue 19 June 2007 16:45

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

Re: [Mapx 5.0 + VB 6] affichage d'un layer ?

ouep j'ai oublié de modifier qq chose : li.addParameter "Name", "test"..mais bon même en modifiant ça, le cercle ne s'affiche toujours pas

Hors ligne

 

#4 Tue 19 June 2007 16:56

Sébastien VERNIER
Juste Inscrit !
Date d'inscription: 7 Sep 2005
Messages: 8

Re: [Mapx 5.0 + VB 6] affichage d'un layer ?

Bonjour,

Je pense que votre problème vient d'un mauvais système de coordonnées.

En effet, dans Mapx comme dans MapInfo Pro d'ailleurs, vous pouvez spécifier un système à l'affichage et un autre pour les calculs.

Vous récupérez des coordonnées dans celui de l'affichage (Map1.DisplayCoordSys) et vous générez un objet dans celui du calcul (Map1.NumericCorrdsys).

Faîtes au préalable correspondre les 2 (Map1.NumericCoordsys = Map1.Displaycoordsys).

Bonne journée

Sébastien

Hors ligne

 

#5 Tue 19 June 2007 20:10

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: [Mapx 5.0 + VB 6] affichage d'un layer ?

Bonjour

Le problème viens du rafraîchissement de la carte, à chaque fois que tu rajoutes un objet tu es obligé de rafraîchir la carte à moins de placer la couche que tu modifie comme la couche animé.

Dans ce cas et dans ce cas chaque modification sera reportée dès la modification.

Cela permet entre autre de faire clignoter un tracé par exemple en cachant et en rendant visible la couche à intervalle régulier.

Cordialement

Damien

Hors ligne

 

#6 Wed 20 June 2007 09:30

ninikkhuet
Participant occasionnel
Date d'inscription: 13 Jun 2007
Messages: 20

Re: [Mapx 5.0 + VB 6] affichage d'un layer ?

exact, effectivement hier j'ai essayé de rafraîchir et ça a fonctionné. Merci pour le conseil de la carte animé, ça va certainement me servir pour la suite !

Hors ligne

 

Pied de page des forums

Powered by FluxBB