登录模块加载中...
会员投稿 投稿指南 今天是:
打印本页 | 关闭窗口 | 双击滚屏 您的位置首页>>网页制作学习园地>>NET教程>>net编程及其它>>详解google和百度地图map的使用
详解google和百度地图map的使用
来源:不详 ‖ 作者:佚名 ‖ 点击: ‖ 时间:11-04-29 14:52:49 ‖ 【 】‖ 我要投稿

google和百度map都提供了范围搜索的功能:比如搜索指定位置指定范围内的所有kfc店铺,它们使用的都是自己的店铺数据,可有时候我们只需要在地图上显示我们自己存储的店铺,并把它们标注在地图上,同样只给定两个参数:指定位置(某一处的经纬度lnglat)和搜索半径(r)。

每个地图API都提供了计算两个坐标之间距离的方法,我们可以从库中拿出所有的店铺的经纬度(slnglat),然后逐一计算出lnglat到slnglat距离s,若s

前段时间写了个例子,主要通过java实现(计算距离经纬度范围之类的)

1. 建立模型:半径r的范围表示一个圆,不过一般情况下我们完全可以把它看作是一正方形...呀呀呀,还是用代码说话吧,下面是一个pojo:

/**

* 类Bounds.java的实现描述:用户当前位置半径x米的经纬度范围

*

* @author zjb 2011-3-30 下午04:56:13 */public class Bounds {   

/**    

* 当前位置正北方向x米处 纬度     */   

PRivate Double latN;    /**     * 当前位置正南方向x米处 纬度     */   

private Double latS;    /**     * 当前位置正东方向x米处 经度     */   

private Double lagE;    /**     * 当前位置正西方向x米处 经度     */   

private Double lagW;    //getters or setters}
2. 计算所需要的经纬度范围Bounds,表示该点(lnglat)处正东西南北距离r处的经纬度坐标,具体方法如下:

/**    

* @param lat 纬度    

* @param lag 经度    

 * @param r 半径    

 * @return Boolean    

 */    public static Boolean check(Company company, Double lat, Double lag, Integer r) {       

double R = 6371;//地球半径       

double distance = 0.0;       

double dLat = Double.valueOf(new BigDecimal(String.valueOf((company.getLat() - lat)))                     

 .multiply(new BigDecimal(String.valueOf(Math.PI)))                     

.divide(new BigDecimal(String.valueOf(180)),                     

DEFAULT_DIV_SCALE,BigDecimal.ROUND_HALF_EVEN).toString());       

 double dLon = Double.valueOf(new BigDecimal(String.valueOf((company.getLag() - lag)))                     

.multiply(new BigDecimal(String.valueOf(Math.PI))) 

|<< << < 1 2 3 > >> >>|
加入收藏:  加入收藏夹  | 发送给好友:  发送给好友
责任编辑:admin
相关文章列表
请文明参与讨论,禁止漫骂攻击。  
网友评论