You are not logged in.

Dear visitor, welcome to krpano.com Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, October 11th 2010, 11:24pm

Javascript function to calculate distance between map spots

Hi,

I'm trying to get this to work with:

Source 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
<script type="text/javascript">
// <![CDATA[
function krpano() 
	{
		return document.getElementById("krpanoSWFObject");
	}
function test()
	{
krpano().call("trace(test);");
	}
function distance(lat1, lon1, lat2, lon2, unit) {
	var radlat1 = Math.PI * lat1/180
	var radlat2 = Math.PI * lat2/180
	var radlon1 = Math.PI * lon1/180
	var radlon2 = Math.PI * lon2/180
	var theta = lon1-lon2
	var radtheta = Math.PI * theta/180
	var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
	dist = Math.acos(dist)
	dist = dist * 180/Math.PI
	dist = dist * 60 * 1.1515
	if (unit=="K") { dist = dist * 1.609344 }
	if (unit=="N") { dist = dist * 0.8684 }
	return dist;
	krpano().set("dist", dist);
} 
// ]]>
</script>



And:

Source code

1
2
js(distance(%2,%3,%4,%5,K));
trace(get(dist));



But it's returning a null value in the trace. Anyone any ideas?

michel

Professional

Posts: 1,153

Location: ANDORRA

Occupation: TV

  • Send private message

2

Tuesday, October 12th 2010, 12:16am

Hi beek,

I am not an expert, but *rolleyes* ...
I think the return statement has nothing to do here (should be useful to return a value to a javascript function)... Also, if I am not on mistake the return ends the function so the following line code is not executed...
So, try this:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function distance(lat1, lon1, lat2, lon2, unit) {
	var radlat1 = Math.PI * lat1/180
	var radlat2 = Math.PI * lat2/180
	var radlon1 = Math.PI * lon1/180
	var radlon2 = Math.PI * lon2/180
	var theta = lon1-lon2
	var radtheta = Math.PI * theta/180
	var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
	dist = Math.acos(dist)
	dist = dist * 180/Math.PI
	dist = dist * 60 * 1.1515
	if (unit=="K") { dist = dist * 1.609344 }
	if (unit=="N") { dist = dist * 0.8684 }
	krpano().set("dist", dist);
} 


Hope this help...

I am curios to see the usage of your code. What is it for? ...

SAlut.

3

Tuesday, October 12th 2010, 2:17am

Cheers Michel,

I solved it with:

return krpano().set("dist",dist);


It's to work out distances between mapspot lat and longs - so I can tell the user how far away things are!

p.s. it's not true - you are an expert!

olihar

Trainee

Posts: 139

Location: Iceland

Occupation: Interaction Designer

  • Send private message

4

Tuesday, October 12th 2010, 8:41am

beek

Are you going to post an example of this in use for others to see?