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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
// geo-location-javascript v0.4.8 http://code.google.com/p/geo-location-javascript/ Copyright (c) 2009 Stan Wiechers. Licensed under the MIT licenses.
var bb_success;var bb_error;var bb_blackberryTimeout_id=-1;function handleBlackBerryLocationTimeout()
{if(bb_blackberryTimeout_id!=-1)
{bb_error({message:"Timeout error",code:3});}}
function handleBlackBerryLocation()
{clearTimeout(bb_blackberryTimeout_id);bb_blackberryTimeout_id=-1;if(bb_success&&bb_error)
{if(blackberry.location.latitude==0&&blackberry.location.longitude==0)
{bb_error({message:"Position unavailable",code:2});}
else
{var timestamp=null;if(blackberry.location.timestamp)
{timestamp=new Date(blackberry.location.timestamp);}
bb_success({timestamp:timestamp,coords:{latitude:blackberry.location.latitude,longitude:blackberry.location.longitude}});}
bb_success=null;bb_error=null;}}
var geo_position_js=function(){var pub={};var provider=null;var u="undefined";pub.showMap=function(latitude,longitude)
{if(typeof(blackberry)!=u)
{blackberry.launch.newMap({"latitude":latitude*100000,"longitude":-longitude*100000});}
else
{window.location="http://maps.google.com/maps?q=loc:"+latitude+","+longitude;}}
pub.getCurrentPosition=function(success,error,opts)
{provider.getCurrentPosition(success,error,opts);}
pub.init=function()
{try
{if(typeof(geo_position_js_simulator)!=u)
{provider=geo_position_js_simulator;}
else if(typeof(bondi)!=u&&typeof(bondi.geolocation)!=u)
{provider=bondi.geolocation;}
else if(typeof(navigator.geolocation)!=u)
{provider=navigator.geolocation;pub.getCurrentPosition=function(success,error,opts)
{function _success(p)
{if(typeof(p.latitude)!=u)
{success({timestamp:p.timestamp,coords:{latitude:p.latitude,longitude:p.longitude}});}
else
{success(p);}}
provider.getCurrentPosition(_success,error,opts);}}
else if(typeof(window.blackberry)!=u&&blackberry.location.GPSSupported)
{if(typeof(blackberry.location.setAidMode)==u)
{return false;}
blackberry.location.setAidMode(2);pub.getCurrentPosition=function(success,error,opts)
{bb_success=success;bb_error=error;if(opts['timeout'])
{bb_blackberryTimeout_id=setTimeout("handleBlackBerryLocationTimeout()",opts['timeout']);}
else
{bb_blackberryTimeout_id=setTimeout("handleBlackBerryLocationTimeout()",60000);}
blackberry.location.onLocationUpdate("handleBlackBerryLocation()");blackberry.location.refreshLocation();}
provider=blackberry.location;}
else if(typeof(window.google)!="undefined"&&typeof(google.gears)!="undefined")
{provider=google.gears.factory.create('beta.geolocation');pub.getCurrentPosition=function(successCallback,errorCallback,options)
{function _successCallback(p)
{if(typeof(p.latitude)!="undefined")
{successCallback({timestamp:p.timestamp,coords:{latitude:p.latitude,longitude:p.longitude}});}
else
{successCallback(p);}}
provider.getCurrentPosition(_successCallback,errorCallback,options);}}
else if(typeof(Mojo)!=u&&typeof(Mojo.Service.Request)!="Mojo.Service.Request")
{provider=true;pub.getCurrentPosition=function(success,error,opts)
{parameters={};if(opts)
{if(opts.enableHighAccuracy&&opts.enableHighAccuracy==true)
{parameters.accuracy=1;}
if(opts.maximumAge)
{parameters.maximumAge=opts.maximumAge;}
if(opts.responseTime)
{if(opts.responseTime<5)
{parameters.responseTime=1;}
else if(opts.responseTime<20)
{parameters.responseTime=2;}
else
{parameters.timeout=3;}}}
r=new Mojo.Service.Request('palm://com.palm.location',{method:"getCurrentPosition",parameters:parameters,onSuccess:function(p){success({timestamp:p.timestamp,coords:{latitude:p.latitude,longitude:p.longitude,heading:p.heading}});},onFailure:function(e){if(e.errorCode==1)
{error({code:3,message:"Timeout"});}
else if(e.errorCode==2)
{error({code:2,message:"Position unavailable"});}
else
{error({code:0,message:"Unknown Error: webOS-code"+errorCode});}}});}}
else if(typeof(device)!=u&&typeof(device.getServiceObject)!=u)
{provider=device.getServiceObject("Service.Location","ILocation");pub.getCurrentPosition=function(success,error,opts)
{function callback(transId,eventCode,result){if(eventCode==4)
{error({message:"Position unavailable",code:2});}
else
{success({timestamp:null,coords:{latitude:result.ReturnValue.Latitude,longitude:result.ReturnValue.Longitude,altitude:result.ReturnValue.Altitude,heading:result.ReturnValue.Heading}});}}
var criteria=new Object();criteria.LocationInformationClass="BasicLocationInformation";provider.ILocation.GetLocation(criteria,callback);}}}
catch(e){if(typeof(console)!=u)
{console.log(e);}
return false;}
return provider!=null;}
return pub;}();
|