Avatar billede Lars Søndergaard Nybegynder
21. januar 2004 - 10:53 Der er 14 kommentarer og
3 løsninger

vise koordinater på et kort i form af små runde prikker

Hejsa!

Jeg skal vise nogle koordinater (hentet fra en DB) på et kort.

Jeg forestiller mig et kort i form af et jgp/gif image og på en eller anden måde skal jeg vise nogle koordinater på dette kort i form af små runde prikke eller lignende.

Nogen der har arbejdet med noget lignende ?? Jeg søger ideer, links og gerne små kode eksempler på hvordan dette kunne løses.

Jeg fordeler points ud fra hvad der hjælper mig mest.
Avatar billede burningice Nybegynder
21. januar 2004 - 11:12 #1
ved at hente dine koordinater (x, y) ud fra db'en kan du oprette et point-object ud fra dem, og sætte det ind på dit billede. Det er ikke det store problem.
Avatar billede clausc Nybegynder
21. januar 2004 - 12:19 #2
Du kan tegne dem via et Graphics-object.

Noget i stil med:
using(Graphics g = Graphics.FromImage(dit_kort_image))
{
  foreach(Point p in dine_koordinater)
    g.DrawEllipse(System.Drawing.SystemPens.ControlText,
                  p.X,
                  p.Y,
                  1.0f,
                  1.0f);
}

Undersøg Pen og Brush klasserne hvis du vil styre farver mv.

Håber det gi'r lidt inspiration

/Claus
Avatar billede odegaard Nybegynder
21. januar 2004 - 15:02 #3
Du skal selvfølgelig også lave en smule kode der omregner mellem image- og object-coordinatesystem.
Dvs. fx. mellem længde/breddegrad og pixelkoordinater.

Jeg har selv arbejdet en del med kort (både på nettet og i applikationer), og det du efterspørger er bestemt ikke særlig svært.
Avatar billede Lars Søndergaard Nybegynder
21. januar 2004 - 15:03 #4
clausc + cyberfessor >

Jeg skal have det vist på et website.. kan man vise et System.Drawing.Image på et website ?

mvh subtile
Avatar billede Lars Søndergaard Nybegynder
21. januar 2004 - 15:04 #5
odegaard > bestemt ikke særlig svært - det glæder mig.. jeg går snart i gang :-)
Avatar billede odegaard Nybegynder
21. januar 2004 - 15:04 #6
subtile: Du kan lave et billede og sende til websitet. Det kræver så blot en seperat "side". Der findes masser af indlæg om dette på eksperten.

Fx. <img src="GenerateMap.aspx?showpoint=3452,63421" />
Avatar billede Lars Søndergaard Nybegynder
21. januar 2004 - 15:11 #7
odegaard > jeg skal nogengange vise mere end en million koordinater, så netop dette eksempel tror jeg ikke jeg kan bruge.. men hvis man man vise et System.Drawing.Image på et website vil det være dejligt ??
Avatar billede odegaard Nybegynder
21. januar 2004 - 15:20 #8
Du kan vise en gif/jpeg/png på et website, og det handler derfor om at generere et billede-fil (dvs. en stream af data der gør det ud for en fil) og dette laves ud fra en System.Drawing.Image (eller Bitmap).
Eksemplet med ?showpoint= var blot et eksempel. Der er jo mange måder du kan parse data til en anden "side" ("side" i gåseøjne, da det jo faktisk er et billede der sendes retur). Fx. via SessionState, Cookies eller QueryString.

En million punkter på ét billede? Det er da urealistisk at kunne overskue så mange data. Baggrundskortet vil jo helt drukne i prikker.
Avatar billede Lars Søndergaard Nybegynder
21. januar 2004 - 15:25 #9
Ja en mio er måske lige i overkanten men 5-600.000 kan der godt komme. Jeg vil prøve at se på det med at lave en stream. Det lyder som en spændende idé :)

Jeg kigger på det og fordeler points når jeg er blevet lidt klogere.
Avatar billede odegaard Nybegynder
21. januar 2004 - 15:41 #10
Hvis du vil tegne et billede på et billede (fx. et ikon) er her lidt kode fra en tidligere applikation (lettere omskrevet med risiko for fejl):

Bitmap icon = new Bitmap("flag.bmp")); //Get flag icon
Bitmap MyMap = new Bitmap(ImageWidth,ImageHeight); //Create image to draw on
Graphics g = Graphics.FromImage(MyMap); //Create graphics reference to image
g.DrawImage(CurrentMap, 0, 0); //Draw background map
//Set white as transparent on icon
System.Drawing.Imaging.ImageAttributes att = new System.Drawing.Imaging.ImageAttributes();
att.SetColorKey(Color.White,Color.White);
int x = mapToPixelX((double)Longitude); //Convert to pixel coordinates
int y = mapToPixelY((double)Latitude); //Convert to pixel coordinates
g.DrawImage(icon,new Rectangle(x,y,19,23),1,1,19,23,GraphicsUnit.Pixel,att); //Draw icon on image
//Her kunne man i stedet tegne en cirkel som clausc viser med DrawEllipse


Her er et eksempel på at gemme en System.Drawing.Bitmap som en png-stream:

System.IO.MemoryStream ms = new System.IO.MemoryStream();
MyMap.Save(ms, ImageFormat.Png);
MyMap.Dispose();
Avatar billede Lars Søndergaard Nybegynder
02. februar 2004 - 14:57 #11
clausc > kom med et svar så er der også points til dig..
Avatar billede clausc Nybegynder
02. februar 2004 - 16:12 #12
Okies. Takker
Avatar billede Lars Søndergaard Nybegynder
03. februar 2004 - 17:54 #13
Jeg har lige et ekstra spørgsmål hvis nogen skulle vide det.. jeg viser mit kort på en ImageButton og selvom ImageUrl er sat rigtig refresh'er den ikke billedet korrekt.. åbner jeg billedfilen som skal vises indeholder den de rigtige informationer men det er den gamle version som vises på knappen selvom den ikke findes mere.. how come ???
Avatar billede Lars Søndergaard Nybegynder
03. februar 2004 - 17:55 #14
points til jer to.. og tak for input..
Avatar billede Lars Søndergaard Nybegynder
03. februar 2004 - 17:56 #15
pis den vil ikke give points :(
Avatar billede clausc Nybegynder
03. februar 2004 - 18:06 #16
ImageButton er da ikke standard?

Whatever, prøv:

if (this.ImageButton.Image != null)
  this.ImageButton.Image.Dispose();
this.ImageButton.Image = din_nye_bitmap;
Avatar billede Lars Søndergaard Nybegynder
03. februar 2004 - 18:11 #17
hmm jeg laver allerede en dispose på den ImageButton.Dispose();

men HVIS jeg laver en refresh af selve siden vises det rigtige billede.. mine metoder kører ikke i en "if (!Page.IsPostBack)" så jeg fatter sgu ikke hvorfor den ikke kan refreshe.. antyways.. warum can ich keine points geben ?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester