[JS] Google Geocoder probleem in IE

Pagina: 1
Acties:

  • ralphje
  • Registratie: December 2004
  • Laatst online: 30-11 13:54

ralphje

Hey, it's me!

Topicstarter
Ik heb de volgende code voor mijn Geocoder:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<form action="#" onsubmit="newMarker(this.adres.value); this.zoekknop.disabled = true; return false;">
<input type="text" size="30" name="adres" id="adres" value="" /> 
<input type="submit" value="Zoeken" id="zoekknop" name="zoekknop" />
(...)
</form>

(...)

<script type="text/javascript" defer="defer">
(...)
geocoder = new GClientGeocoder();
(...)

// Zoekt de marker op en roept dan newMarkerVerwerk aan
function newMarker(address) {
    if(geocoder) {
        geocoder.getLatLng(address, function(point) { newMarkerVerwerk(point); });
    }
}

// Verwerkt de doorgegeven coordinaten. (Opmerking: deze functie is uit bovenstaande geocoder.getLatLang geript, maar in geen van beide gevallen werkte het in IE.
function newMarkerVerwerk(point) {
    if(!point) {
        alert('Dit adres kon niet worden gevonden.'); // point is in IE hier 'null'
    } else {
        (...)
    }
}
</script>


De defer staat erin om Internet Explorer dit script pas na het laden van de pagina uit te laten voeren. Bovendien laat ik natuurlijk veel meer gebeuren, en wordt de Google Map geïnitialiseerd en dergelijke, maar dit is het belangrijkste denk ik. Heb je meer nodig, dan geef ik je het wel of je moet even je aanmelden en dan naar http://www.surf2me.nl/manager/profiel.php?action=kaart gaan.

In elk geval, in Firefox en elke andere normale browser gebeurt er wat er moet gebeuren. De browser vindt de locatie en doet wat hij moet doen. De variabele point is dan gedefineerd. In Internet Explorer (6 en 7) geeft hij echter de foutmelding. Test ik het echter ergens anders op mijn server zonder de rompslomp eromheen (http://www.surf2me.nl/google4b0365812ed18e50.html), dan doet hij het wel altijd.

Conclusie: Er is iets mis met mijn code, maar ik zie niet wat. Iemand suggesties of iemand die het probleem kent?

[ Voor 7% gewijzigd door ralphje op 29-01-2007 23:12 ]

Geniet, maar surf met mate!


  • Michali
  • Registratie: Juli 2002
  • Laatst online: 05-11 19:33
Heeft address de waarde die je verwacht dat het heeft/zou moeten hebben? Krijg je verder geen JS errors?

Noushka's Magnificent Dream | Unity


  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Heb je meer nodig, dan geef ik je het wel of je moet even je aanmelden
Handiger om een kant en klare testcase ergens neer te zetten. Aanmelden om je te helpen met je probleem, lijkt mij niet de bedoeling :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


  • ralphje
  • Registratie: December 2004
  • Laatst online: 30-11 13:54

ralphje

Hey, it's me!

Topicstarter
Het was te proberen :P... Ik zal even kijken of ik even wat kan verplaatsen.
Edit: Testcase op http://www.surf2me.nl/testcase.php.

Geen JS errors.

[ Voor 22% gewijzigd door ralphje op 01-02-2007 19:47 ]

Geniet, maar surf met mate!


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Even iets anders, de coordinaten van de Geocoder van Google zelf zijn in Nederland niet erg exact. Probeer je eigen woonadres maar eens, soms zit hij er wel 2 straten vanaf. Ik voer zelf altijd maar de latitude en longitude in de database in, en die haal ik hier vandaan, deze site geeft wel erg nauwkeurige graden weer. Helaas geeft deze man zijn script niet vrij, waardoor je het geen automatisch proces kan maken, tenzij je zelf goed in grazen bent.

[ Voor 15% gewijzigd door Peedy op 01-02-2007 20:24 ]


  • ralphje
  • Registratie: December 2004
  • Laatst online: 30-11 13:54

ralphje

Hey, it's me!

Topicstarter
Bij mij is hij heel toevallig precies op de oprit. Het systeem werkt - vanuit gebruikersperspectief - als volgt:

- Je zoekt een adres op
- Je plaatst er een placemark op
- Je verplaatst de placemark naar de juiste plaats (zie ook de testcase)
- Je voegt informatie toe, wijzigt de placemark etc.
- Je slaat de boel op

De database bestaat uit de coordinaten en de extra toegevoegde informatie. En omdat je in de Geocoder ook coordinaten in kunt voeren, lijkt mij het geen probleem om de Google Geocoder te blijven gebruiken. Deze kan goed samenwerken met Google Maps en bovendien werkt het ook perfect ... behalve in dat (@$#%&!) Internet Explorer. Daar blijft hij 30s (ca.) zoeken en dan geeft hij een fout terug. En het gekke is dat het in Firefox wel gewoon werkt... grmbl.

Geniet, maar surf met mate!


  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ik ben niet helemaal thuis in de Google Maps API, ben er zelf pas ook gisteren mee begonnen, maar here's a thought:
Je hebt twee keer deze regel in je code;
code:
1
geocoder = new GClientGeocoder();

Eén keer op regel 218, in de functie loadGoogleMap(), en een keer op regel 321, in de functie newMarker(). Misschien dat IE erover struikelt dat je hem al een keer leeg hebt gemaakt voordat je er eentje maakt en 'vult'?

Edit; oh nee, dit slaat nergens op, want het gaat fout bij de functie newMarkerVerwerk(), waar hij 'point' niet ziet en dus reageert op if(!point).

Probeer eens de inhoud van newMarkerVerwerk() ín function(point) (regel 323) te zetten, zoals ook hier door Google zelf gedaan wordt. Misschien lost dat het probleem op.
[code=js]function newMarker(address) {
geocoder = new GClientGeocoder();
if(geocoder) {
geocoder.getLatLng(address, function(point) {
document.getElementById('zoekknop').disabled = false;
if(!point) {
alert('Dit adres kon niet worden gevonden.\n\nProbeer Engelse zoektermen, voeg het land toe aan je zoekterm of probeer anders alleen op het land of stad te zoeken. Postcodes werken soms ook.\n\nVoorbeelden:\n- Manhattan, New York;\n- Las Vegas, Nevada, USA;\n- Nederland;\n- Belgium;\n- Amsterdam;\n- Almere, NL;\n- P.C. Hooftstraat, Amsterdam, NL;\n- 1071 BP NL;\n- 52° 21\' 35.62"N 4°52\'45.70"E;\n- 52.362183, 4.877929');
} else {
if(document.getElementById('onlywarp').checked) {
addMarker(point,'','','','',lastid+1,'');
markers[lastid].openInfoWindowTabsHtml(tabs[lastid]);
}
if(document.getElementById('centerview').checked)
map.panTo(point);
}
}
);
}
}[/code=js]

[ Voor 68% gewijzigd door Peedy op 01-02-2007 21:18 ]


  • ralphje
  • Registratie: December 2004
  • Laatst online: 30-11 13:54

ralphje

Hey, it's me!

Topicstarter
Ik had hem in principe op deze manier gemaakt, maar om twee dingen had ik dat verplaatst:
- Ten eerste omdat de code er niet bepaald erg overzichtelijk van werd
- Ten tweede omdat ik dacht dat dit het IE-probleem was.

Ik heb je code in de testcase geïmplenteerd maar het maakt geen verschil.

De dubbele aanwezigheid van de geocoder definitie heeft ook een debugreden (ook geen verschil). Zelf vermoed ik een probleem met de verbinding tussen de client en Google. Echter, op http://www.surf2me.nl/google4b0365812ed18e50.html doet de Geocoder het wel. Conclusie: Er zit ergens iets fout in mijn code... maar waar???

Geniet, maar surf met mate!


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:35

crisp

Devver

Pixelated

Haal die defer eens weg en maak van loadGoogleMap(); eens window.onload=loadGoogleMap();

Intentionally left blank


  • ralphje
  • Registratie: December 2004
  • Laatst online: 30-11 13:54

ralphje

Hey, it's me!

Topicstarter
Gedaan. Nu krijg ik een Microsoft Internet Explorer runtime error (na 'tig windows van JIT weg te hebben geklikt) op de regel:
window.onload = loadGoogleMap(); : Not implemented

Vervang ik echter de regel door window.onload = loadGoogleMap; (zonder de haakjes) dan werkt hij wel zonder fouten. Ik betwijfel hoe dit werkt in andere browsers, maar in Firefox en IE werkt het perfect en bovendien is die lelijke IE-defer-fix eruit, en daarom:

_/-\o_ en heel erg bedankt! (Dit had ik zelf moeten bedenken, maar ik zat te klooien met document.onload of zo ...)

[ Voor 9% gewijzigd door ralphje op 03-02-2007 01:10 ]

Geniet, maar surf met mate!


  • doxick
  • Registratie: Augustus 2006
  • Laatst online: 08-10 11:55
het verschil in die regel zit hem er in dat window.onload = lGM(); verwijst naar de waarde die die functie terug geeft en window.onload = lGM; verwijst naar de 'verwijzing naar de functie'.
Reden dat het waarschijnlijk in FF mogelijk goed gaat is dat die hem al wel kent als je het uitvoert en IE niet (waarschijnlijk zal het zoiets geweest zijn)

Verwijderd

Dag,

Ik ben zelf eve wat aan het knutselen geweest.

Kan je hier wat mee?

http://www.xlg.nl/tools/geo/

  • BradJohnson
  • Registratie: Juni 2004
  • Laatst online: 10:38
Welke database gebruik je daarvoor? Is die een beetje compleet? Ik gebruik tot nu toe altijd http://plaatsnamen.mijndb.nl/, maar die is eigenlijk veelte oud en te onnauwkeurig.

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ik neem aan dat hij daar gewoon de geocoder database van Google voor gebruikt, anders zou hij de latitude en longitude ook niet hebben.

Verwijderd

ik gebruik hiervoor http://stevemorse.org/jcal/latlon.php. Ik had de link gebruikt van de post van hierboven.

Mijn versie is alleen geschikt voor nederland.

  • Peedy
  • Registratie: Februari 2002
  • Laatst online: 06-11-2024
Ah! Heel relaxt! Kan je er ook voor zorgen dat de longitude en latitude exacter worden weergegeven, net zoals op stevemorse.org (die resultaten van maporama) ? En zou je het script wat je hebt gemaakt vrij willen geven (of anders mij mailen) ?

Verwijderd

nu ook met google-map

[ Voor 197% gewijzigd door Verwijderd op 07-02-2007 20:31 ]

Pagina: 1