<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
/** *瀏覽器
*/ 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