php h5获取经纬度,h5获取经纬度,当前位置,并计算与另一个经纬度的距离 千米为单位...

var latitudeX, latitudeY;

getLocation();

function getLocation() {

if (navigator.geolocation) {

navigator.geolocation.getCurrentPosition(showPosition, getPositionError, {

"enableHighAcuracy" : true

//是否启用高精确度模

});

} else {

alert("你的浏览器不支持定位.");

StoreSearchObject.init();

}

}

function getPositionError(error) {

StoreSearchObject.init();

switch (error.code) {

case error.TIMEOUT:

alert(" 连接超时,请重试 ");

break;

case error.PERMISSION_DENIED:

alert(" 您拒绝了使用位置共享服务,查询已取消 ");

break;

case error.POSITION_UNAVAILABLE:

alert(" 亲爱的火星网友,非常抱歉,我们暂时无法为您所在的星球提供位置服务 ");

break;

}

}

function showPosition(position) {

//alert("Latitude: " + position.coords.latitude + "
Longitude: " + position.coords.longitude);

StoreSearchObject.requestParam.latitudeX = position.coords.longitude;

StoreSearchObject.requestParam.latitudeY = position.coords.latitude;

StoreSearchObject.init();

}

package cn.com.platform.utils;

import java.text.DecimalFormat;

import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.math.NumberUtils;

/** *

@author linwk 2016年5月18日

*/ public class DistantUtils {

/**

* 计算地球上任意两点(经纬度)距离

*

* @param long1

* 第一点经度

* @param lat1

* 第一点纬度

* @param long2

* 第二点经度

* @param lat2

* 第二点纬度

* @return 返回距离 单位:米

*/

public static double DistancemM(double long1, double lat1, double long2, double lat2) {

double a, b, R;

R = 6378137; // 地球半径

lat1 = lat1 * Math.PI / 180.0;

lat2 = lat2 * Math.PI / 180.0;

a = lat1 - lat2;

b = (long1 - long2) * Math.PI / 180.0;

double d;

double sa2, sb2;

sa2 = Math.sin(a / 2.0);

sb2 = Math.sin(b / 2.0);

d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));

return d;

}

/**

* 计算地球上任意两点(经纬度)距离

*

* @param latitudeX

* @param latitudeY

* @param latitudeX2

* @param latitudeY2

* @return km千米

* @author linwk 2016年5月18日

*/

public static double DistantKm(String latitudeX, String latitudeY, String latitudeX2, String latitudeY2) {

double long1 = 0, lat1 = 0, long2 = 0, lat2 = 0;

if (StringUtils.isNoneBlank(latitudeX, latitudeY, latitudeX2, latitudeY2) == true) {

long1 = NumberUtils.toDouble(latitudeX);

lat1 = NumberUtils.toDouble(latitudeY);

long2 = NumberUtils.toDouble(latitudeX2);

lat2 = NumberUtils.toDouble(latitudeY2);

} else {

return 0;

}

double a, b, R;

R = 6378137; // 地球半径

lat1 = lat1 * Math.PI / 180.0;

lat2 = lat2 * Math.PI / 180.0;

a = lat1 - lat2;

b = (long1 - long2) * Math.PI / 180.0;

double d;

double sa2, sb2;

sa2 = Math.sin(a / 2.0);

sb2 = Math.sin(b / 2.0);

d = 2 * R * Math.asin(Math.sqrt(sa2 * sa2 + Math.cos(lat1) * Math.cos(lat2) * sb2 * sb2));

DecimalFormat df = new DecimalFormat("0.0");

return new Double(df.format(d / 1000).toString());

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值