Advertisement
Guest User

Untitled

a guest
Nov 28th, 2015
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.37 KB | None | 0 0
  1. function setLatLng(dataset) {
  2. var lat = dataset.lat
  3. var lng = dataset.lng
  4. return new L.LatLng(lat, lng)
  5. }
  6.  
  7. function latLngRadians(dataset) {
  8. return _.map(dataset, function(item) {
  9. var latRad = item.lat*(Math.PI/180)
  10. var lngRad = item.lng*(Math.PI/180)
  11. return [latRad, lngRad]
  12. })
  13. }
  14.  
  15. function radToCart(radians) {
  16. var cartesian = []
  17. _.each(radians, function(coordinate) {
  18. var cartesianLat = Math.cos(coordinate[0]) * Math.cos(coordinate[1]);
  19. var cartesianLng = Math.cos(coordinate[0]) * Math.sin(coordinate[1]);
  20. var sineLat = Math.sin(coordinate[0]);
  21. cartesian.push({"x":cartesianLat, "y":cartesianLng, "z":sineLat})
  22. })
  23. return cartesian
  24. }
  25. function geoMidpoint(coordinates) {
  26. var carts = radToCart(coordinates);
  27. var allX = _.map(carts, function(cart) {
  28. return cart.x
  29. })
  30. var meanX = allX.reduce(function(p, c, i, a) {
  31. return (p + c)/a.length
  32. })
  33. var allY = _.map(carts, function(cart) {
  34. return cart.y
  35. })
  36. var meanY = allY.reduce(function(p, c, i, a) {
  37. return (p + c)/a.length
  38. })
  39. var allZ = _.map(carts, function(cart) {
  40. return cart.z
  41. })
  42. var meanZ = allZ.reduce(function(p, c, i, a) {
  43. return (p + c)/a.length
  44. })
  45. var midpoint = [meanX, meanY, meanZ]
  46. var lon = Math.atan2(meanY, meanX)
  47. var hyp = Math.sqrt(meanX * meanX + meanY * meanY)
  48. var lat = Math.atan2(meanZ, hyp)
  49. lat = lat*(180/Math.PI)
  50. lon = lon*(180/Math.PI)
  51. midpoint = [lat, lon]
  52. return midpoint
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement