Hi!
I have this code used for adding speedcamera controls in Norway. The
problem is that I dont want the marker to be on the mep before you
make a click. But only one marker must be avaliable aswell so tat
people only add one marker at a time.
Can you help me?
Heres my code:
<script type="text/javascript">
//<![CDATA[
// globals
var map;
var marker;
var places = [ ];
// geocoder variables and constants
var geo = new GClientGeocoder();
var reasons = [ ] ;
reasons[G_GEO_SUCCESS] = "Success" ;
reasons[G_GEO_MISSING_ADDRESS] = "Missing Address: The address
was
either missing or had no value." ;
reasons[G_GEO_UNKNOWN_ADDRESS] = "Unknown Address: No
corresponding
geographic location could be found for the specified address." ;
reasons[G_GEO_UNAVAILABLE_ADDRESS] = "Unavailable Address: The
geocode for the given address cannot be returned due to legal or
contractual reasons." ;
reasons[G_GEO_BAD_KEY] = "Bad Key: The API key is either
invalid or
does not match the domain for which it was given" ;
reasons[G_GEO_TOO_MANY_QUERIES] = "Too Many Queries: The daily
geocoding quota for this site has been exceeded." ;
reasons[G_GEO_SERVER_ERROR] = "Server error: The geocoding
request
could not be successfully processed." ;
reasons[G_GEO_BAD_REQUEST] = "A directions request could not be
successfully parsed.";
reasons[G_GEO_MISSING_QUERY] = "No query was specified in the
input.";
reasons[G_GEO_UNKNOWN_DIRECTIONS] = "The GDirections object
could
not compute directions between the points.";
var accuracy = [ ] ;
accuracy[0] = 'Ukjent' ;
accuracy[1] = 'Land' ;
accuracy[2] = 'Region' ;
accuracy[3] = 'Sub-region' ;
accuracy[4] = 'By' ;
accuracy[5] = 'Post adresse' ;
accuracy[6] = 'Gate' ;
accuracy[7] = 'Vei' ;
accuracy[8] = 'Adresse' ;
accuracy[9] = 'Område' ;
// fix precision of reported Lat/Lng
function fix6ToString(n) {
return n.toFixed(6).toString();
}
// get window width independent of browser
function getWWidth() {
var myWidth = 0;
if( typeof( window.innerWidth ) == 'number' ) {
//Non-IE
myWidth = window.innerWidth;
} else if( document.documentElement &&
document.documentElement.clientWidth) {
//IE 6+ in 'standards compliant mode'
myWidth = document.documentElement.clientWidth;
} else if( document.body && document.body.clientWidth ) {
//IE 4 compatible
myWidth = document.body.clientWidth;
}
return myWidth;
}
// get window height independent of browser
function getWHeight() {
var myHeight = 0;
if( typeof( window.innerHeight ) == 'number' ) {
myHeight = window.innerHeight;
} else if( document.documentElement &&
document.documentElement.clientHeight) {
myHeight = document.documentElement.clientHeight;
} else if( document.body && document.body.clientHeight ) {
myHeight = document.body.clientHeight;
}
return myHeight;
}
// set div size
function setDivSize() {
if (getWWidth()) { // if it works!
document.getElementById("googleMap").style.width =
getWWidth() >
758 ? Math.ceil(getWWidth()*0.300) +'px' : '450px' ;
}
if (getWHeight()) {
document.getElementById("googleMap").style.height =
Math.ceil(getWHeight()*0.300) +'px';
}
}
// resize map keeping same centre
function resizeAndCenterMap() {
var mapcenter = map.getCenter();
setDivSize();
map.checkResize();
map.setCenter(mapcenter);
}
// nudges
function nudgeW() {
var ll = marker.getPoint();
var newll = new GLatLng(ll.lat(), (ll.lng() -
nudgeFactor().lng()));
marker.setPoint(newll);
marker.redraw();
GEvent.trigger(marker,'click');
}
function nudgeE() {
var ll = marker.getPoint();
var newll = new GLatLng(ll.lat(), (ll.lng() +
nudgeFactor().lng()));
marker.setPoint(newll);
marker.redraw();
GEvent.trigger(marker,'click');
}
function nudgeN() {
var ll = marker.getPoint();
var newll = new GLatLng(ll.lat() + nudgeFactor().lat(),
ll.lng());
marker.setPoint(newll);
marker.redraw();
GEvent.trigger(marker,'click');
}
function nudgeS() {
var ll = marker.getPoint();
var newll = new GLatLng(ll.lat() - nudgeFactor().lat(),
ll.lng());
marker.setPoint(newll);
marker.redraw();
GEvent.trigger(marker,'click');
}
// nudgeFactor returns GLatLng with Lat & Lng per pixel
function nudgeFactor() {
var b = map.getBounds().toSpan(); // LatLng as size of the map
var s = map.getSize(); // width and height of map in pixels
return new GLatLng(b.lat()/s.height , b.lng()/s.width );
}
// zoom in
function zoomIn() {
var mag = map.getZoom();
if (mag < 19) mag += 1;
map.setCenter(map.getCenter(), mag);
}
// zoom out
function zoomOut() {
var mag = map.getZoom();
if (mag > 2) mag -= 1;
map.setCenter(map.getCenter(), mag);
}
// main map drawing function
function load() {
var nudgestring = "<table cellpadding='0' cellspacing='0'
border='0' class='blockcenter'><tr><td> </td><td><a
href='javascript:nudgeN()' accesskey='n'><img src='images/
btn_arrow_up.gif' alt='up' title='nudge north' width='20' height='20'
border='0' /></a></td><td> </td></tr>" +
"<tr><td><a href='javascript:nudgeW()'><img src='images/
btn_arrow_l.gif' alt='left' title='nudge west' width='20' height='20'
border='0' /></a></td><td><img src='images/mark_mini.gif' alt='marker'
title='nudge marker' width='20' height='20' /></td><td><a
href='javascript:nudgeE()'><img src='images/btn_arrow_r.gif'
alt='right' title='nudge east' width='20' height='20' border='0' /></
a></td></tr>" +
"<tr><td> </td><td><a href='javascript:nudgeS()'><img src='images/
btn_arrow_dn.gif' alt='down' title='nudge south' width='20'
height='20' border='0' /></a></td><td> </td></tr></table>";
if (GBrowserIsCompatible()) {
// Reset the initial size of the map div to fill screen
setDivSize();
// Start processing the map
map = new GMap2(document.getElementById("googleMap"));
GEvent.addListener(map, "moveend", function() {
var center = map.getCenter();
document.getElementById("message").innerHTML =
"Midten av kartet @
" + fix6ToString(center.lat()) + " , " + fix6ToString(center.lng());
});
GEvent.addListener(map, "dblclick", function(moverlay,
mpoint) {
marker.setPoint(mpoint);
GEvent.trigger(marker,'click');
});
// Lane Realty pos
var LRPoint = new GLatLng(<?php echo
$kontroll['geokode']; ?>);
var CentrePoint = new GLatLng(<?php echo
$kontroll['geokode']; ?>);
// Add controls
map.addMapType(G_PHYSICAL_MAP);
map.addControl(new GLargeMapControl());
map.addControl(new GScaleControl());
map.addControl(new GMapTypeControl());
map.setCenter(CentrePoint,5);
// Now the marker and click label
marker = new GMarker(LRPoint, {draggable: true});
GEvent.addListener(marker, "click", function() {
var point = marker.getPoint();
marker.InfoWindowHtml(
fix6ToString(point.lat()) + " , " +
fix6ToString(point.lng()) + nudgestring);
map.addOverlay(marker);
});
GEvent.addListener(marker, "dragstart", function() {
map.closeInfoWindow();
});
GEvent.addListener(marker, "dragend", function() {
var point = marker.getPoint();
marker.openInfoWindowHtml(
fix6ToString(point.lat()) + " , " +
fix6ToString(point.lng()) + nudgestring);
});
GEvent.addListener(marker, "drag", function(){
document.getElementById("location").value=marker.getPoint().toUrlValue();
});
map.addOverlay(marker);
// Monitor the window resize event and let the map know when it
occurs
if (window.attachEvent) { // IE
window.attachEvent("onresize", function()
{resizeAndCenterMap();} );
} else { //
others
window.addEventListener("resize", function()
{resizeAndCenterMap();} , false);
}
// Display marker info window
GEvent.trigger(marker,'click');
// Add Lat Long to centre report at base of map
GEvent.trigger(map,'moveend');
}
}
// Set marker for placemark
function setPlaceMarker(n) {
var p = places[n].Point.coordinates;
map.setCenter(new GLatLng(p[1],p[0]), 8 +
places[n].AddressDetails.Accuracy);
marker.setPoint(new GLatLng(p[1],p[0]));
marker.redraw();
GEvent.trigger(marker,'click');
}
// Find an Address...
function findaddress( ){
if (document.addressform.address.value) {
var address = document.addressform.address.value;
geo.getLocations(address, function (result) {
if (result.Status.code == G_GEO_SUCCESS) {
document.getElementById("geomessage").innerHTML
= "<br /
><br /><b>Fant " + result.Placemark.length +" result(er)</b>";
for (var i=0; i<result.Placemark.length; i++){
places[i] = result.Placemark[i];
var p = places[i].Point.coordinates;
document.getElementById("geomessage").innerHTML += "<br /
><br /> <input type='button' value='Vis adresse på kart!'
onclick='setPlaceMarker(" + i + ")' name='goto" + i + "' /><br /> "+(i
+1)+": "+ places[i].address + " : " + p[1] + " , " + p[0] + "<br />
<b>Resultat:</b> " + accuracy[places[i].AddressDetails.Accuracy] +
"<br />";
}
setPlaceMarker(0);
} else {
var reason="Code "+result.Status.code;
if (reasons[result.Status.code]) {
reason = reasons[result.Status.code]
}
alert('Could not find "' + address + '" ' +
reason);
}
} ) ;
} else {
alert('Must have something in the address!')
}
}
//]]>
</script>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Maps API" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/Google-Maps-API?hl=en
-~----------~----~----~----~------~----~------~--~---