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());
}
}