百度有2个地理位置相距多少公里的API吗?

kacc850 发布于 2014/08/14 09:01
阅读 614
收藏 1

各位 ,有知道百度有2个地理位置相距多少公里的API吗?  我今天要做个 地震地区距离网友的实际距离和方向的功能、



 要做个安全范围
比如6级地震  在6级地震周边多少公里内是危险的 我要告诉网友
比如4级地震 在周边多少公里时安全的 我要计算告诉网友


比如西藏即使7级地震,你上海上网的,就会提醒你 很安全。虽然震级大,但离你远。   如果你是四川上网的就会提醒你 有一定危险和震感


所以我需要做一个,地理位置相距多少的功能


大家有这方面的API吗?


以下是问题补充:

@kacc850:1:抓取地震经纬度 2:获取用户IP所在城市 3:把城市转化为经纬度 4:计算2个经纬度之差,算出距离和相对方向 5:利用震级+地震深度计算多少范围内是安全范围 6:与4结果进行对比 7:返回给网友所在地区距离地震是否是安全范围还是危险范围。 (2014/08/14 09:40)
加载中
0
JPer
JPer
骚年别搞了,小心地震局的搞你,抢人家饭碗
kacc850
kacc850
你去看看地震局的官网。。太简陋了。。。 根本没有用户体验度可言啊。 而且我以后抓取的是美国地震局的数据 然后转化UTC时区和翻译英文
0
归丶海
归丶海
直线距离还是可行径距离?
归丶海
归丶海
回复 @kacc850 : 你是做PHP的吧 这个用JS都能算出来。不过确实不怎么耗性能 看你怎么实现。把压力放到客户浏览器上呗 用JS实现
kacc850
kacc850
回复 @归丶海 : 比较耗资源吗?
归丶海
归丶海
回复 @kacc850 : ... 一个地理引擎 百度API实在没有 自己算也行 有现成的公式 两点之间距离公式 再转换成KM或者M
kacc850
kacc850
回复 @归丶海 : ARCGIS是什么
归丶海
归丶海
回复 @kacc850 : 有坐标 两点间直线距离很好算啊 不知道百度的API里是否提供这类方法 我做的Arcgis里 这些都是有的
下一页
0
陈阳阳阳
陈阳阳阳
根据经纬度自己算啊
陈阳阳阳
陈阳阳阳
回复 @kacc850 : 我擦,那不然呢!你打算怎么搞?
kacc850
kacc850
我操,你牛逼。 你的意思是 我获取地震震中的经纬度,然后根据用户IP获取城市的名字,然后获取这个城市的经纬度,然后计算出2个经纬度之间的实际距离和方向?
0
傲罗
傲罗

首先有经度差(纬度差)之间的距离换算,

然后就是两点之间的经度差(纬度差)计算,这个可以根据直角三角函数来计算

再然后距离就出来了

0
村长杨京京
村长杨京京
可以根据经纬度计算的@http ://my.oschina.net/u/1398304/blog/284654
0
purely
purely
百度坐标转换成gps坐标后,自己计算距离。
0
kacc850
kacc850

引用来自“purely”的评论

百度坐标转换成gps坐标后,自己计算距离。

你的意思是 我获取地震震中的经纬度,然后根据用户IP获取城市的名字,然后获取这个城市的经纬度,然后计算出2个经纬度之间的实际距离和方向?



有没有稍微简单点的啊,如果都要我自己服务器计算 要浪费很多服务器资源啊

kacc850
kacc850
回复 @kiwivip : 大哥,我单核 1g内存啊。。 www.benzhou.com 这只是我首页的一个小功能啊。。 另外看我问题的补充,如果按照经纬度来算,我要计算7步啊。。
kiwivip
kiwivip
调用第三方API对你系统的消耗绝对远远大于你自己计算这个值的消耗...
0
kimvin
kimvin

BMap 类有一个方法 getDistance(),可以获取两个坐标点之间的距离,建议你看下。给段代码:

// 百度地图API功能
var map = new BMap.Map("allmap");
var point = new BMap.Point(120.219375,30.259244);
map.centerAndZoom(point,12);
map.pixelToPoint();
// 创建地址解析器实例
var myGeo = new BMap.Geocoder(), start = null, end = null;
// 将地址解析结果显示在地图上,并调整地图视野,获取 start 点
myGeo.getPoint("杭州市滨江区", function(point){
  if (point) {
    // start 点坐标
    start = point;
    map.centerAndZoom(point, 12);
    map.addOverlay(new BMap.Marker(point));
    myGeo.getPoint("杭州市西湖区", function(point){
      if (point) {
        // end 点坐标
        end = point;
        map.addOverlay(new BMap.Marker(point));
        // 获取 start 和 end 直接的距离,单位:米
        console.log(map.getDistance(start, end));
      }
    }, "杭州市");
  }
}, "杭州市");


kacc850
kacc850
非常感谢,我先试下
0
j
joyhuang

public class LocationUtils {

 private final static double EARTH_RADIUS = 6378.137;

 /**
  * 获取两地距离
  *
  * @param lat1
  *            A地纬度
  * @param lng1
  *            A地经度
  * @param lat2
  *            B地纬度
  * @param lng2
  *            B地经度
  * @return
  */
 public static double getDistance(double lat1, double lng1, double lat2,
   double lng2) {
  double radLat1 = rad(lat1);
  double radLat2 = rad(lat2);
  double a = radLat1 - radLat2;
  double b = rad(lng1) - rad(lng2);
  double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
    + Math.cos(radLat1) * Math.cos(radLat2)
    * Math.pow(Math.sin(b / 2), 2)));
  s = s * EARTH_RADIUS;
  s = s * 1000;
  return s;
 }

 /**
  * 获取两地距离
  *
  * @param lat1
  *            A地纬度
  * @param lng1
  *            A地经度
  * @param lat2
  *            B地纬度
  * @param lng2
  *            B地经度
  * @return
  */
 public static double getKilometreDistance(double lat1, double lng1,
   double lat2, double lng2) {
  double radLat1 = rad(lat1);
  double radLat2 = rad(lat2);
  double a = radLat1 - radLat2;
  double b = rad(lng1) - rad(lng2);
  double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
    + Math.cos(radLat1) * Math.cos(radLat2)
    * Math.pow(Math.sin(b / 2), 2)));
  s = s * EARTH_RADIUS;
  s = Math.round(s * 10000) / 10000;
  return s;
 }

 public static void main(String[] args) {
  System.out.println(getDistance(23.134507, 113.372508, 23.13073,
    113.402195));
 }

 private static double rad(double d) {
  return d * Math.PI / 180.0;
 }

}

kacc850
kacc850
我也试下
0
恺哥
kacc850
kacc850
JAVA的。。。。我是搞PHP的。。
kacc850
kacc850
这个里面要引用哪个类库文件
返回顶部
顶部