Google Maps javascript probleem

Status
Niet open voor verdere reacties.

faldera

Nieuwe gebruiker
Lid geworden
22 nov 2011
Berichten
1
Ik ben al uren bezig om dit werkend te krijgen, maar helaas. Wellicht heeft iemand van jullie een oplossing hiervoor?

Ik wil op mijn website een Google Map weergeven. Deze is standaard zichtbaar als je de website opent en hierin wordt een locatie aangegeven. Boven de google map is een formulier geplaatst, waarin mijn een vertrekpunt in kan geven en vervolgens route kan berekenen.

De route wordt vervolgens getoond in een div met id directions.

Op het invulveld heb ik een javascriptje gezet die de inhoud van het veld (Adres, woonplaats) leeg maakt op het moment dat je hierin klikt. Klik je weer buiten het veld, staat er weer 'Adres, woonplaats'.

Het probleem is echter, wanneer je erin klikt, vervolgens niets invult en dan de route berekent, geeft die weliswaar een foutmelding dat het adres niet bestaat, maar creëert dan toch de route.

Na de foutmelding moet er dus eigenlijk juist géén route meer gecreëerd worden, anders is de foutmelding bijna zinloos.

Weet iemand hoe ik dit voor elkaar krijg? Eigenlijk moet er naast de code die er nu al is, gecontroleerd worden of er ook nog in het invulveld 'Adres, woonplaats' staat. Zo ja, dan error, maar vervolgens geen beschrijving creëren.

Alvast bedankt. (onderstaande google maps javascript code, de code om het veld leeg te maken en het formulier).

P.S.: Ik heb het officiele adres vervangen door 'Straat, adres, woonplaats etc'

googlemaps.js

[JS]//<![CDATA[
var map;
var gdir;
var geocoder = null;
var addressMarker;

function load() {
if (GBrowserIsCompatible()) {
map = new GMap2(document.getElementById("mapgoogle"));

var place = "straatnaam+huisnummer+plaats+NL";
geocoder = new GClientGeocoder();
if (geocoder) {
geocoder.getLatLng(
place,
function(point) {
if (!point) {
alert(place + "niet gevonden");
} else {
map.setCenter(point, 13);
var marker = new GMarker(point);
map.addOverlay(marker);
map.addControl(new GSmallZoomControl3D());
// map.addControl(new GMapTypeControl());
}
}
);
}

gdir = new GDirections(map, document.getElementById("directions"));
GEvent.addListener(gdir, "load", onGDirectionsLoad);
GEvent.addListener(gdir, "error", handleErrors);

setDirections("The Netherlands", "Hoogeveen", "nl_NL");
}
}

function setDirections(fromAddress, toAddress, locale) {
gdir.load("from: " + fromAddress + " to: " + toAddress,
{ "locale": locale });
checkAddress(fromAddress);
}

function checkAddress(adres){
geocoder2 = new GClientGeocoder();
if (geocoder2) {
geocoder2.getLatLng(
adres,
function(point) {
if (!point) {
alert(adres + " is geen geldig adres. Voer als volgt in: Straat + huisnr, postcode plaats");
}
}
);
}
}

function handleErrors(){
if (gdir.getStatus().code == G_GEO_UNKNOWN_ADDRESS)
alert("No corresponding geographic location could be found for one of the specified addresses. This may be due to the fact that the address is relatively new, or it may be incorrect.nError code: " + gdir.getStatus().code);
else if (gdir.getStatus().code == G_GEO_SERVER_ERROR)
alert("A geocoding or directions request could not be successfully processed, yet the exact reason for the failure is not known.n Error code: " + gdir.getStatus().code);

else if (gdir.getStatus().code == G_GEO_MISSING_QUERY)
alert("The HTTP q parameter was either missing or had no value. For geocoder requests, this means that an empty address was specified as input. For directions requests, this means that no query was specified in the input.n Error code: " + gdir.getStatus().code);

// else if (gdir.getStatus().code == G_UNAVAILABLE_ADDRESS) <--- Doc bug... this is either not defined, or Doc is wrong
// alert("The geocode for the given address or the route for the given directions query cannot be returned due to legal or contractual reasons.n Error code: " + gdir.getStatus().code);

else if (gdir.getStatus().code == G_GEO_BAD_KEY)
alert("The given key is either invalid or does not match the domain for which it was given. n Error code: " + gdir.getStatus().code);

else if (gdir.getStatus().code == G_GEO_BAD_REQUEST)
alert("A directions request could not be successfully parsed.n Error code: " + gdir.getStatus().code);

else alert("An unknown error occurred.");

}



//]]>
[/JS]

Code om veld leeg te mouden (onblur/ onfocus)

[JS]
function clear_textbox(elementName, defaultValue)

{

if (elementName.value == defaultValue){

elementName.value = "";

elementName.style.color = "#000000";

}

}

function check_textbox(elementName, defaultValue)

{

if (elementName.value == ""){

elementName.value = defaultValue;

elementName.style.color = "#CCCCCC";

}

}
[/JS]

[/B]

Formulier:


HTML:
<form name="map" action="#" onSubmit="setDirections(this.from.value, this.to.value, this.locale.value); return false && ">
					<input type="text" onfocus="clear_textbox(this, 'Adres, Woonplaats');" onblur="check_textbox(this, 'Adres, Woonplaats');" class="text" id="fromAddress" name="from" value="Adres, Woonplaats" />

					<input readonly="readonly" disabled="disabled" type="hidden"  size="25" id="toAddress" name="to" value="straatnaam+huisnummer+woonplaats+Nederland"/>
					<input id="locale" name="locale" type="hidden" value="nl" />                                        
					<input class="button" name="submit" type="submit" value="Bereken route"/>
				</form>
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan