`
wandejun1012
  • 浏览: 2694099 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

查找附近的商家 算法

    博客分类:
  • java
 
阅读更多

 

 

思路:利用IOS所在位置坐标为圆心,以某个半径为圆的外切正方形的四个顶点为参照物,去和数据库中的商家坐标进行比较,从而找出符合条件的商家。

 

实质上,最本质的就是寻找四个顶点的过程。

 

Java实现:

 

 

private static double degrees(double d) {
		return d * (180 / Math.PI);
	}

	
	/**
	 * 获取四个顶点的list
	 * @param lgt
	 * @param lat
	 * @param distance
	 * @return
	 */
	public static List<LatlgtPoint> getPointsList(double lgt, double lat,
			double distance) {

		List<LatlgtPoint> pointsList = new ArrayList<LatlgtPoint>();

		double dlng = 2 * Math.asin(Math.sin(distance / (2 * EARTH_RADIUS))
				/ Math.cos(rad(lat)));
		dlng = degrees(dlng);// 一定转换成角度数 原PHP文章这个地方说的不清楚根本不正确 后来lz又查了很多资料终于搞定了

		double dlat = distance / EARTH_RADIUS;
		dlat = degrees(dlat);// 一定转换成角度数

		// 左上角的顶点
		LatlgtPoint leftUpPoint = new LatlgtPoint();
		leftUpPoint.setLat(lat + dlat);
		leftUpPoint.setLgt(lgt - dlng);
		pointsList.add(leftUpPoint);

		// 左下角的顶点
		LatlgtPoint leftDownPoint = new LatlgtPoint();
		leftDownPoint.setLat(lat - dlat);
		leftDownPoint.setLgt(lgt - dlng);
		pointsList.add(leftDownPoint);

		// 右上角的顶点
		LatlgtPoint rightUpPoint = new LatlgtPoint();
		rightUpPoint.setLat(lat + dlat);
		rightUpPoint.setLgt(lgt + dlng);
		pointsList.add(rightUpPoint);

		// 右下角的顶点
		LatlgtPoint rightDownPoint = new LatlgtPoint();
		rightDownPoint.setLat(lat - dlat);
		rightDownPoint.setLgt(lgt + dlng);
		pointsList.add(rightDownPoint);

		return pointsList;

	}

private static final double EARTH_RADIUS = 6378137;

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


/**
	 * 传入经纬度计算距离,单位为km,保留2位小数
	 * 
	 * @param lng1
	 * @param lat1
	 * @param lng2
	 * @param lat2
	 * @return
	 */
	public static String calDistance(float lng1, float lat1, float lng2,
			float lat2) {
		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 / 1000;
		return String.format("%.2f", s);
	}

 

 

Point类:

 

package com.chebaobao.api.common.test;

public class LatlgtPoint {
	private double lat;//纬度
	private double lgt;//经度
	public double getLat() {
		return lat;
	}
	public void setLat(double lat) {
		this.lat = lat;
	}
	public double getLgt() {
		return lgt;
	}
	public void setLgt(double lgt) {
		this.lgt = lgt;
	}
	@Override
	public String toString() {
		return "LatlgtPoint [lat=" + lat + ", lgt=" + lgt + "]";
	}
	
}

 

refurl:http://digdeeply.org/archives/06152067.html

 

http://www.cnblogs.com/cake/p/3240325.html

 

http://dev.mysql.com/doc/refman/5.1/zh/spatial-extensions-in-mysql.html#creating-a-spatially-enabled-mysql-database   引申出来的mysql高版本的空间索引, 以及mongodb,sqlserver2008都有。

 

http://www.oschina.net/question/41761_132578 mongodb

 

http://bbs.csdn.net/topics/390346060?page=1#post-395973698 csdn网上人的解答也不错,比如写一个计算距离的函数,比如有专门的坐标字段

 

下面是通过GPS坐标计算直线距离的:

 

http://gooderlee.iteye.com/blog/1178163

 

http://blog.csdn.net/e_wsq/article/details/6151160

 

http://www.cnblogs.com/ycsfwhh/archive/2010/12/20/1911232.html

 

分享到:
评论

相关推荐

    利用Java+MySQL实现附近功能实例

    现在很多手机软件都用附近搜索功能,但具体是怎么实现的呢?下面这篇文章就来给大家介绍关于利用Java+MySQL实现附近功能的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。

    SSM项目基于Apriori算法的网络书城.zip

    基于Apriori算法的网络书城系统是一款利用数据...总体而言,基于Apriori算法的网络书城系统为用户提供了一个智能化、个性化的购书体验,同时为商家提供了强大的数据分析和营销工具,有助于提升销售业绩和市场竞争力。

    matlab外卖配送(先访问顾客,后访问商家,有时间窗,遗传算法)

    不懂可以查看我的博文

    最新SpringBoot项目基于协同过滤算法商品推荐系统.zip

    - 对于商家,提供了商品发布、查看销售数据等功能,方便其了解商品销售情况。 - 对于消费者,提供了查看推荐商品、购买商品、评价商品等功能,帮助其发现可能感兴趣的商品。 3. **系统设计**: - 软件架构选择了B/S...

    Shopnc b2b2c 好商城V5 33hao-V5完整源码.zip

    商家后台增加实体店经纬度获取坐标功能 √ 商家填写经纬度获取坐标后,手机端用户可在店铺街查看商家具体坐标。 商家后台PC成交情况 √ 商家后台显示今日和昨日PC客单价、成交额、子订单数 商家账户冻结资金 √ ...

    基于SSM零食商城的设计与实现100910(附源码+数据库)

    (4) 商品浏览:可以搜索查询商品(根据商家或商品名称查询),按分类(商品种类)查看商品、按商家分类查看商品,显示商品详情、商品评价,提供直接购买、加入购物车操作。 (5) 商品推荐:用户登录后根据用户订单...

    基于php的校园网站的设计与实现

    系统包括前端和后台端Linux日提作系统用以计合理算法实现注册信息分快速搜索设计(论文)主要涉库存储商家用户信息,后台干系统数据库维护,和防及的研究方向准的系统框架和服务。可以使用户对学开这计高语的配色火墙...

    链表实现校园卡管理系统(C语言)

    3)食堂消费信息包括:商家序号(明确对应具体食堂和具体商家)、消费时 间、消费金额(单次不超过 50 元,一天不超过 100 元)。特殊情况:教职工在食 堂每次消费超过 20 元,立即返还 5 元补贴至校园卡中。

    社区电商商户端小程序源码+项目说明(商家可以在手机端操作左右商品上下架,商品是否参加秒杀、拼团等活动).zip

    社区电商商户端小程序源码+项目说明(商家可以在手机端操作左右商品上下架,商品是否参加秒杀、拼团等活动、满减优惠、积分抵扣等营销手段,支撑在线查看分析所有商品的销售,财务、业绩情况。此小程序使用微信原生...

    新媒体运营+网站优化+百度收录+网站

    大约 60% 的消费者使用 百度搜索来查找商家,超过 80% 的在线搜索导致直接销售或实体店访问。您想优化您的网站,以便出现在这些搜索的顶部。这应该是任何企业主的首要任务。不幸的是,搜索优化不是修复它并忘记它的...

    最新小程序基于微信小程序的购物系统+php.zip

    3. **订单管理**:用户可以实时查看订单状态,包括支付、配送和物流跟踪等。 4. **用户评价系统**:购买完成后,用户可对商品和服务进行评价,构建信任的购物环境。 5. **优惠券与促销活动**:商家可以通过小程序...

    基于springboot商品优选系统开题报告.doc

    4. 系统设计:详细描述系统的设计思路和设计原则,包括数据库设计、界面设计、算法设计等。 5. 开发计划和进度安排:列出系统的开发计划和进度安排,包括各个阶段的工作内容、时间节点和责任人。 6. 预期成果和效益...

    ssm项目小程序基于uniapp智能小程序商城.zip

    8. **个性化推荐**:根据用户的浏览和购买历史,采用智能算法为用户推荐可能感兴趣的商品。 9. **后台管理系统**:为商家提供全面的后台管理系统,包括商品管理、订单处理、数据分析等功能。 整个系统以uniapp作为...

    黄金头脑—微信营销平台功能版发布

    20140414功能版根据网络免费下载和淘宝商家卖的所有版本综合修复内容如下: 01.修复首页模板大图幻灯和导航之间的空白缝隙BUG。 02.修复帮助模板文字和导航之间的重叠BUG。 03.修复首次关注无法回复BUG。 04.修复3G...

    SpringBoot项目购物推荐网站的设计与实现.zip

    它利用Spring Boot的快速开发特性,结合了用户行为跟踪、商品信息管理、智能推荐算法、用户评价系统、购物车功能以及支付接口集成等功能,旨在提供一个高度定制且用户体验优良的购物环境,以提升顾客满意度和增加...

    C++《超市商品管理系统》课程设计报告.doc

    4 2.1.2 主功能函数流程图 4 2.2 软件的数据(结构)设计 5 2.3 系统的算法设计 6 2.3.1 购买商品程序算法 6 2.3.2 添加商品程序算法 7 2.3.3 修改商品程序算法 8 2.3.4 统计商品程序算法 9 3 软件的实现 11 3.1 主...

    YiTie V1.2分类信息管理系统商业正式版

    专业的过滤注入式入侵、严密高效的防护算法和监控程序构成站点严密的安全体系。 强大而完善的功能 完善的多重无限分类,分站、分类栏目均可生成html页面、可选用的所见即所得编辑器、自定义信息发布字段、分站完全...

    大数据LBS.docx

    拉动服务又称主动服务,是指用户主动请求的服务,如用户主动查找当地的酒店,位置服务接受用户的查询请求后,分析用户的地理位置,将符合用户需求的酒店信息返回给用户,从而完成了一次主动服务。 大数据LBS全文共2...

    ShoppersOffers仪「ShoppersOffers Finder」-crx插件

    我们确保您在通过购物网站浏览时,可以查看正在寻找的每种产品的每种更好的替代品。 为此,我们利用识别您当前感兴趣产品的算法,将您看到的价格与网络上不断增长的交易集合进行比较,并为您显示更好的报价。 我们的...

    ShoppersOffers Finder-crx插件

    我们确保您在通过购物网站浏览时,可以查看正在寻找的每种产品的每种更好的替代品。 为此,我们利用识别您当前感兴趣产品的算法,将您看到的价格与网络上不断增长的交易集合进行比较,并为您显示更好的报价。 我们的...

Global site tag (gtag.js) - Google Analytics