Avatar billede hoejgaard Juniormester
23. april 2008 - 13:56 Der er 38 kommentarer og
1 løsning

Kort med afmærkninger

Hej
Jeg har en tabel i en database, med bynavne og koordinater (eks. højde- og breddegrad) disse skal så plottes ind på et verdenskort med et punkt eller kryds..og kortet skal så vises på en hjemmeside..
Hvordan gør man det ??
Avatar billede w13 Novice
23. april 2008 - 13:57 #1
Jeg ville nok indlæse koordinaterne fra databasen i et JavaScript-array og så lave en JavaScript-kode der indsatte krydserne.
Både fordi det vil spare på serverens resourcer og fordi det vil være nemmere.
Avatar billede w13 Novice
23. april 2008 - 14:14 #2
Lidt pseudokode:
----------------------------
<img id="worldmap" src="worldmap.jpg">

<img id="cross" style="border:0;display:none" src="cross.gif">

<script type="text/javascript">
function insertCoords(){
  var aCoords=["11,22","33,44","55,66"];
  var iMapTop=document.getElementById("worldmap").offsetTop;
  var iMapLeft=document.getElementById("worldmap").offsetLeft;
  var oBody=document.getElementsByTagName("body")[0];

  for(var i=0;i<aCoords.length;i++){
    oBody.appendChild(document.getElementById("cross").cloneNode(true));
    oBody.lastChild.style.top=iMapTop+aCoords[i].split(",")[0]+"px";
    oBody.lastChild.style.top=iMapTop+aCoords[i].split(",")[0]+"px";
    oBody.lastChild.style.display="block";
  }
}
window.onload=function(){insertCoords()};
</script>
Avatar billede w13 Novice
23. april 2008 - 14:14 #3
Hov:
---------------------------
<img id="worldmap" src="worldmap.jpg">

<img id="cross" style="border:0;display:none" src="cross.gif">

<script type="text/javascript">
function insertCoords(){
  var aCoords=["11,22","33,44","55,66"];
  var iMapTop=document.getElementById("worldmap").offsetTop;
  var iMapLeft=document.getElementById("worldmap").offsetLeft;
  var oBody=document.getElementsByTagName("body")[0];

  for(var i=0;i<aCoords.length;i++){
    oBody.appendChild(document.getElementById("cross").cloneNode(true));
    oBody.lastChild.style.top=iMapTop+aCoords[i].split(",")[0]+"px";
    oBody.lastChild.style.left=iMapLeft+aCoords[i].split(",")[1]+"px";
    oBody.lastChild.style.display="block";
  }
}
window.onload=function(){insertCoords()};
</script>
Avatar billede w13 Novice
23. april 2008 - 14:23 #4
Nu har jeg lige testet det, og rettet til:
------------------------------------------
<img id="worldmap" style="border:0;width:600px;height:500px" src="worldmap.jpg">

<img id="cross" style="border:0;display:none" src="cross.gif">

<script type="text/javascript">
function insertCoords(){
  var aCoords=["11,22","33,44","55,66"];
  var iMapTop=document.getElementById("worldmap").offsetTop;
  var iMapLeft=document.getElementById("worldmap").offsetLeft;
  var oBody=document.getElementsByTagName("body")[0];

  for(var i=0;i<aCoords.length;i++){
    oBody.appendChild(document.getElementById("cross").cloneNode(true));
    oBody.lastChild.style.position="absolute";
    oBody.lastChild.style.top=iMapTop+parseInt(aCoords[i].split(",")[0])+"px";
    oBody.lastChild.style.left=iMapLeft+parseInt(aCoords[i].split(",")[1])+"px";
    oBody.lastChild.style.display="block";
  }
}
window.onload=function(){insertCoords()};
</script>
Avatar billede hoejgaard Juniormester
23. april 2008 - 14:32 #5
Det var dog fantastisk, vil lige kigge på det.
Er ikke den store javascript haj..
går ud fra at jeg skal have indlæst koordinaterne og sat dem ind i den variabel aCoords ?
Avatar billede hoejgaard Juniormester
23. april 2008 - 14:52 #6
Rent teknisk hvordan er det så nemmest at lave det, skal det være sådan at man omsætter eks breddegrad og højdegrad til antal pixels fra midten af skærmen, og så har kortet centreret på midten eller hvordan ??
Avatar billede w13 Novice
23. april 2008 - 15:10 #7
Jep, de skal indsættes i aCoords, så de kommer til at stå som de gør nu.

Min kode fungerer sådan, at den selv finder ud af, hvor kortet er placeret på siden. Så du skal sådan set bare have omsat bredde-/længdegrad til pixels fra venstre øverste hjørne på billedet af kortet.
Avatar billede coderdk Praktikant
23. april 2008 - 16:00 #8
Ellers kig på Google Maps API'et: http://code.google.com/apis/maps/ :)
Avatar billede hoejgaard Juniormester
23. april 2008 - 16:20 #9
coderdk
ja det var også en mulighed..
der står dette på siden  http://code.google.com/apis/maps/signup.html :
"Your service must be freely accessible to end users."

Vil det mon sige, at der ikke må kræves betaling for at brugerne kan se kortet, eller at der ikke må bruges login eller hvordan mon ??
Avatar billede olebole Juniormester
23. april 2008 - 16:48 #10
<ole>

Ja, det vil det sige  =)

/mvh
</bole>
Avatar billede coderdk Praktikant
23. april 2008 - 19:53 #11
Ikke betaling, men login påkrævet, såfremt det er gratis at lave sign-up er vel i orden - så er det stadig "freely accessible" :P
Avatar billede hoejgaard Juniormester
10. juli 2008 - 16:28 #12
Nogen der kan sige mig, hvor jeg kan se hvordan man gør følgende med Google Maps API ??
Kan ikke finde det på deres side nemlig..... :

Jeg har en tabel i en database, med bynavne og koordinater (eks. højde- og breddegrad) disse skal så plottes ind på et verdenskort med et punkt eller kryds..og kortet skal så vises på en hjemmeside..
Avatar billede coderdk Praktikant
11. juli 2008 - 11:56 #13
http://code.google.com/apis/maps/documentation/examples/
http://code.google.com/apis/maps/documentation/examples/map-markers.html

I det sidste, looper den 10 gange og laver 10 markers... Du kan selvfølgelig gøre som du vil ;)
Avatar billede hoejgaard Juniormester
12. juli 2008 - 00:35 #14
coderdk
kan man også se det script der genererer det ?
Avatar billede coderdk Praktikant
12. juli 2008 - 01:15 #15
view source / vis kilde - funktionen "initialize" - det er javascript der genererer det... Du kan dog lave noget javascript vha php ;)
Men der er flere måder. Her er lidt mere:

http://code.google.com/support/bin/answer.py?answer=65622
http://code.google.com/support/bin/answer.py?answer=87134&topic=11364
Avatar billede hoejgaard Juniormester
12. juli 2008 - 11:21 #16
coderdk
ja havde håbet der lå noget helt færdigt, er nemlig ikke så stærk i javascript, men må se om jeg kan tygge mig igennem det..
Avatar billede hoejgaard Juniormester
12. juli 2008 - 23:03 #17
findes der et sted, hvor man kan se en masse byers bredde- og længdegrad ??
de skal jo sættes ind i databasen....
Avatar billede coderdk Praktikant
13. juli 2008 - 02:16 #18
http://en.wikipedia.org/wiki/List_of_cities_by_latitude - Den kan du måske bare kravle og skrubbe? :)

For lande: http://www.mobilgistix.com/Resources/GIS/Locations/average-latitude-longitude-countries.aspx <- der er også en CSV (kommasepareret fil)
Avatar billede coderdk Praktikant
13. juli 2008 - 02:19 #19
Avatar billede hoejgaard Juniormester
13. september 2008 - 18:43 #21
jeg er igang med denne :
http://code.google.com/support/bin/answer.py?answer=65622#outputxml
og så prøver jeg at se denne på skærmen men den er helt blank :
phpsqlajax_genxml2.php:

Jeg har lavet databasen med data....
ved ikke lig ehvad der kan være forkert...??
Avatar billede hoejgaard Juniormester
14. september 2008 - 13:16 #22
Ingen der har erfaring med dette ?
Avatar billede hoejgaard Juniormester
15. september 2008 - 11:26 #23
Jeg har gjort som der står på siden, oprettet tabel i databasen, og lavet de filer der står, men siden er bare blank når jeg kører filen ??
Ingen der har prøvet dette script før ??
Avatar billede hoejgaard Juniormester
15. september 2008 - 13:43 #24
Her er link til siderne :
her er xml :
http://www.komsikomsa.dk/phpsqlajax_genxml.php
ser det ikke rigtigt ud ??

og her kortet, men der er ingen afmærkninger på ??? :
http://www.komsikomsa.dk/phpsqlajax_map.htm
Avatar billede coderdk Praktikant
15. september 2008 - 13:53 #25
Prøv at ændre

GDownloadUrl("phpsqlajax_expectedoutput.xml", function(data) {

til

GDownloadUrl("phpsqlajax_genxml.php", function(data) {
Avatar billede hoejgaard Juniormester
15. september 2008 - 14:04 #26
nu ser det ud til at virke med din ændring. mange tak !
Hvordan kan det være at det oprindelige ikke var ok ?
Avatar billede coderdk Praktikant
15. september 2008 - 14:08 #27
Den skulle bruge din PHP-ajaxfil, men .htm-filen refererede til en anden fil (som så ikke fandtes)... :)
Avatar billede hoejgaard Juniormester
15. september 2008 - 14:35 #28
fint, men nu er problemet så at det ikke virker på et andet domæne hvor jeg får meddelelsen :
Call to undefined function domxml_new_doc() in phpsqlajax_genxml.php on line 5
det må være denne :
$doc = domxml_new_doc("1.0");

Hvad kan det skyldes ??
De 2 domæner ligger ikke på samme server....
Avatar billede coderdk Praktikant
15. september 2008 - 14:54 #29
Der er ikke kompileret support i PHP for DOMXML: http://dk.php.net/domxml
Avatar billede hoejgaard Juniormester
15. september 2008 - 15:03 #30
øh hvad mener du ?
Avatar billede coderdk Praktikant
15. september 2008 - 15:10 #31
Enten er det en gammel version af PHP (under v4.2.0) eller også er har de ikke bygget DOM XML ind i den PHP der kører...

Prøv:

<?php phpinfo(); ?>

Hvis du kører den på begge servere kan du se versionsnummer, samt hvilke ting der er kompileret ind i PHP (Se efter DOM)...
Avatar billede hoejgaard Juniormester
15. september 2008 - 15:41 #32
på den hvor det ikke virker er det mht. dom :

DOM/XML  enabled 
DOM/XML API Version  20031129 
libxml Version  2.6.27 
HTML Support  enabled 
XPath Support  enabled 
XPointer Support  enabled 
Schema Support  enabled 
RelaxNG Support  enabled 

og PHP :PHP Version 5.2.6

på det domæne hvor det virker :
domxml
DOM/XML  enabled 
DOM/XML API Version  20020815 
libxml Version  20627 
HTML Support  enabled 
XPath Support  enabled 
XPointer Support  enabled 
DOM/XSLT  enabled 
libxslt Version  1.1.19 
libxslt compiled against libxml Version  2.6.27 
DOM/EXSLT  enabled 
libexslt Version  1.1.19 

og
PHP : PHP Version 4.4.9



på den hvor det virker er der også :
additional .ini files parsed : domxml.ini

den er ikke med på det domæne hvor det ikke virker...


det ser jo ud til at PHP versionen er i orden på begge domæner.. men ved ikke mht dom ??
Avatar billede coderdk Praktikant
15. september 2008 - 16:04 #33
Sorry, der er mig der forveksler DOM med DOMXML (to forskellige ting) - Den ene er indbygget i PHP den anden er en PECL-extension...

http://dk.php.net/domxml
og
http://dk.php.net/dom

Det lader til at domxml skal installeres på PHP 5...

Prøv at kigge i

phpsqlajax_genxml.php

Lav

$doc = domxml_new_doc("1.0");

om til

$doc = new DOMDocument("1.0");

Lav

create_element

om til

createElement

Lav

append_child

om til

appendChild

Lav

set_attribute

om til

setAttribute

Lav

dump_mem

om til

saveHTML


så burde det virke
Avatar billede coderdk Praktikant
15. september 2008 - 16:05 #34
(Og viola, så bruger du nu DOM i stedet for DOMXML)
Avatar billede hoejgaard Juniormester
15. september 2008 - 16:25 #35
yes det virker nu..
mange, mange tak for din hjælp !!
Avatar billede coderdk Praktikant
15. september 2008 - 16:36 #36
np :)
Avatar billede hoejgaard Juniormester
16. september 2008 - 10:47 #37
læg et svar coderdk..
Avatar billede hoejgaard Juniormester
16. september 2008 - 10:49 #38
nå det havde du jo gjort :-)
Avatar billede coderdk Praktikant
16. september 2008 - 12:55 #39
:D
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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