Avatar billede kkaen Nybegynder
10. maj 2010 - 09:48 Der er 1 kommentar og
1 løsning

Variabel ændres tilsyneladende på mystisk vis

Jeg har en lille applikation med Google Maps. Det har virket fint før, og gør det stadig i nogle tilfælde. Men i andre tilfælde opfører den sig mærkeligt.

Jeg har en form, hvori der er mulighed for at indtaste latitude/longitude. Så kører det igennem noget funktionalitet fra Google, og pludselig er koordinaterne ændret en lille smule.

Jeg gik ud fra, at årsagen kunne være en transformation fra f.eks. String til Int, eller Int til Long. Men det fungerer da ikke sådan i javascript, gør det?

Her er det vigtige udsnit af mit kode (og her vises fejlen ved kørsel):

/***************************************************************************************************
********************Pinpoints a location on the map from the coordinates entered********************
                ***************************************************************************************************/
function codeLatLng() {
alert("in codeLatLng");
  var input;
  if(input != null){
    input = null;
  }
  //the writen coordinates from the textfield:
  input = document.getElementById("coordinates").value;
  alert("input= "+input);
  var latlngStr, lat, lng, latlng;
  if(latlngStr!=null){
    latlngStr=null;
  }
  if(lat!=null){
    lat=null;
  }
  if(lng!=null){
    lng=null;
  }
  if(latlng!=null){
    latlng=null;
  }
  if(document.getElementById("srchType") != null){
    document.getElementById("srchType").value = "";
  }
  alert("latlngStr= "+latlngStr+" lat= "+lat+" lng= "+lng+" latlng= "+latlng+" document.getElementById(srchType)= "+document.getElementById("srchType").value);
 
  latlngStr = input.split(",",2);
  lat = parseFloat(latlngStr[0]);
  lng = parseFloat(latlngStr[1]); 
  alert("lat= "+lat+" lng= "+lng);//oprindelige input
 
  latlng = new google.maps.LatLng(lat, lng);
  alert("latlng= "+latlng);
 
  if (geocoder) {
    geocoder.geocode({'latLng': latlng}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK)
      {
        if (results[1])
        {
          map.setZoom(13);
          if(coordinates!=null){
            coordinates=null;
          }
          coordinates=results[0].geometry.location;
          alert("coordinates= "+coordinates);//ændret lidt
          var hiddenElem;
          if(hiddenElem != null){
            hiddenElem =null;
          }
          //store variable in hidden field:
          hiddenElem = document.getElementById("hid");
Avatar billede kkaen Nybegynder
10. maj 2010 - 09:51 #1
Under kørsel med test-koordinaterne "55, 9" udskrives der "55, 9" i alle alert-statements lige indtil "coordinates= (55.0506672, 8.966229)"

Hvordan kan dette være?
Avatar billede kkaen Nybegynder
10. maj 2010 - 11:31 #2
Nu har jeg løst problemet via en genvej.
Der hvor selve kortet blilver centreret stod der tidligere:
map.setCenter(results[0].geometry.location);

Da problemet tilsyneladende opstod inde i 'results' har jeg ændret det til mine egne koordinater:
map.setCenter(latlng);

Og nu virker det.
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