h5獲取經緯度,當前位置,並計算與另外一個經緯度的距離 公里爲單位

<script>
				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 + "<br />Longitude: " + position.coords.longitude);
					StoreSearchObject.requestParam.latitudeX = position.coords.longitude;
					StoreSearchObject.requestParam.latitudeY = position.coords.latitude;
					StoreSearchObject.init();
				}
			</script>

package cn.com.platform.utils;java

import java.text.DecimalFormat;git

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

/** *瀏覽器

  • @author linwk 2016年5月18日

*/ public class DistantUtils {code

/**
 * 計算地球上任意兩點(經緯度)距離
 * 
 * @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());
}

}orm

相關文章
相關標籤/搜索