var map = null;
var geocoder = null;
var val_address = null;
var marker = null;
var zoom = 14;
var mtype = G_HYBRID_MAP;
var Lat=48.852909;
var Long=2.33697;
var o=false;
var oe='utf-8';
var reasons=[];
reasons[G_GEO_SUCCESS] = "Adresse trouvée";
reasons[G_GEO_MISSING_ADDRESS] = "Adresse incomplète";
reasons[G_GEO_UNKNOWN_ADDRESS] = "Adresse inconnue";
reasons[G_GEO_UNAVAILABLE_ADDRESS]= "Adresse invalide";
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";
function load(oo)
{
if(oo) o=true;
if (GBrowserIsCompatible())
{
map = new GMap2(document.getElementById("map"));
if(o) map.addControl(new GSmallMapControl()); else map.addControl(new GLargeMapControl());
map.addControl(new GMapTypeControl());
if(!o) map.addControl(new GOverviewMapControl());
geocoder = new GClientGeocoder();
var center = new GLatLng(Lat, Long);
map.setCenter(center, zoom, mtype);
initMarker(center);
map.addOverlay(marker);
GEvent.addListener(map, "maptypechanged", saveView);
GEvent.addListener(map, "zoomend", saveView);
}
}
function initMarker(center){
var demo = 0;
marker = new GMarker(center, {draggable:!demo});
}
function showAddress(address)
{
if(geocoder)
{
val_address = address;
geocoder.getLocations(val_address, setMarker);
}
}
function setMarker(points)
{
if (points.Status.code == G_GEO_SUCCESS)
{
if(marker!=null) map.removeOverlay(marker);
if(o) return;
if(points.Placemark.length>1)
{
var loc = "Plusieurs adresses trouvées:
";
for(var i=0; i'+ points.Placemark[i].address +"
";
}
$("#locations").html(loc);
$("#locations").slideToggle("fast");
}
var pm=Placemark=points.Placemark[0];
var p =pm.Point.coordinates;
var ad=pm.AddressDetails;
var cc;
try{cc=ad.Country.CountryNameCode;} catch(e){}
var cn;
try{cn=ad.Country.CountryName;} catch(e){}
var saa;
try{saa=ad.Country.AdministrativeArea.SubAdministrativeArea.SubAdministrativeAreaName;}catch(e){}
var cp;
try{cp=ad.Country.AdministrativeArea.SubAdministrativeArea.Locality.PostalCode.PostalCodeNumber;}catch(e){}
var ln;
try{ln=ad.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;}catch(e){}
var st;
try{st=ad.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;}catch(e){}
var tmp_adr = "";
if (st) tmp_adr+=st;
tmp_adr+="\n";
if (cp) tmp_adr+=cp;
if (ln){
if (cp) tmp_adr+=" ";
tmp_adr+=ln;
}
tmp_adr+=", "+cn;
oe='utf-8';
val_address=tmp_adr;
marker = new GMarker(new GLatLng(p[1],p[0]), {draggable: true});
map.addOverlay(marker);
map.setCenter(new GLatLng(p[1],p[0]), zoom);
GEvent.addListener(marker, "click",
function() {
marker.openInfoWindowHtml("Placez le curseur sur votre bâtiment.
A ce niveau, la précision est peu importante.
" + marker.getPoint() + "");
}
);
GEvent.addListener(marker, "dragstart",
function() {
map.closeInfoWindow();
}
);
GEvent.addListener(marker, "dragend",
function() {
var pt= marker.getPoint();
Lat=pt.lat();Long=pt.lng();
$.get("indice_ajax.php", { adr: val_address, lat:Lat, lng:Long, oe:oe } );
}
);
var pt= marker.getPoint();
Lat=pt.lat();Long=pt.lng();
$.get("indice_ajax.php", { adr: tmp_adr, lat: Lat, lng: Long, cp:cp, cc:cc, saa:saa, oe:oe } );
}
else
{
var reason="Code "+points.Status.code;
if (reasons[points.Status.code]) reason = reasons[points.Status.code]
alert('L\'adresse "'+val_address+'" est introuvable (' + reason+').\r\nEssayez de saisir une adresse voisine ...');
}
}
function saveView()
{
if(marker!=null) map.setCenter(marker.getPoint());
zoom = map.getZoom();
var mt = map.getCurrentMapType();
switch (mt){
case G_SATELLITE_MAP:mtype="G_SATELLITE_MAP";break;
case G_NORMAL_MAP:mtype="G_NORMAL_MAP";break;
case G_HYBRID_MAP:mtype="G_HYBRID_MAP";break;
}
$.get("indice_ajax.php", { zoom: map.getZoom(), mtype: mtype } );
}
function setAngle(a)
{
a = parseInt(a)+180;
$("#angle").val(a);
$.get("indice_ajax.php", { ang: a } );
}
var Angle;
var Tid;
function UpdateFlash(){
clearTimeout(Tid);
var flash = document.getElementById("boussole");
var data=flash.GetVariable("Data");
if (!data){
Tid=setTimeout("UpdateFlash()", 25);
} else {
console.log("UpdateFlash", Angle);
flash.SetVariable('Data.boussoleRotation', Angle);
}
}
function setJSAngle(a)
{
$.get("indice_ajax.php", { ang: a } );
a = parseInt(a)-180;
Angle=a;
Tid=setTimeout("UpdateFlash()", 25);
}