`
wandejun1012
  • 浏览: 2732749 次
  • 性别: 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-文档-基于协同过滤算法商品推荐系统文档

    - **结论**:本研究设计并实现了一个基于协同过滤算法的商品推荐系统,能够有效地提高用户满意度和商家销售业绩。 - **展望**:未来将进一步优化推荐算法,探索深度学习等新技术在推荐系统中的应用,提高推荐精度和...

    Aprior算法的VC实现程序

    在实际应用中,Aprior算法常用于市场篮子分析,帮助商家发现消费者的购买习惯,如“买尿布的人往往也会买啤酒”。此外,该算法也可应用于医学诊断、网络日志分析、推荐系统等多个领域。例如,在模式识别中,Aprior...

    springboot+redis实现查询附近商铺功能.zip

    在本项目"springboot+redis实现查询附近商铺功能.zip"中,主要展示了如何利用Spring Boot框架结合Redis缓存系统来实现在web应用中查询附近的商业店铺。以下将详细阐述涉及的关键知识点: 1. **Spring Boot**: ...

    CompKey算法Java实现中南大学电子商务大作业

    排序和查找算法(如快速排序、二分查找)可能用于优化性能。 2. 文件读写:由于数据量可能较大,Java的IO流(如FileInputStream、BufferedReader)将用于读取和处理数据文件。 3. 多线程:为了提高处理效率,可能...

    Apriori算法及其实现

    该算法的主要目的是找出商品集合中哪些组合最常一起出现,从而帮助商家制定营销策略。 #### 二、Apriori算法原理 Apriori算法基于一个重要的假设:如果一个项集是频繁的,则它的所有子集也是频繁的。换句话说,...

    附近商家多门店地图导航 1.4.7,地图怎么添加门店导航,PHP源码.zip

    系统可能通过获取用户的当前位置,查找并列出附近的商家门店,并提供导航路径。这需要理解地图坐标系统,实现地图的显示、缩放、平移功能,以及根据交通状况计算最短或最快路线。 【多门店管理】 "多门店"意味着...

    Apriori算法.NET源代码

    Apriori算法是一种在数据...综上所述,`Apriori.cs`文件提供的.NET源代码实现了一个经典的数据挖掘算法,可用于从交易数据中找出具有高关联性的商品组合,帮助商家理解消费者的购物行为,进而制定更有效的营销策略。

    Apriori算法 C++

    如果你正在寻找VB(Visual Basic)版本的Apriori算法实现,可能需要查找其他资源,或者将现有的C++代码进行语言转换。请注意,不同编程语言的实现细节和语法会有所不同,但基本算法流程是一致的。

    数据挖掘 apriori算法 C++

    在实际应用中,Apriori算法常用于市场篮子分析,帮助商家发现顾客购买行为之间的关联,例如“购买尿布的顾客往往也会买啤酒”。除此之外,该算法还可用于医疗领域,挖掘疾病与症状间的关联,以及在网络安全中检测...

    同城商家

    这种模式在电子商务领域中很常见,尤其是在O2O(Online To Offline)商业模式中,它允许用户在线查找并购买附近商家的商品或服务。 描述中的内容看起来像是重复的标题,可能是一个输入错误或者是为了强调“同城商家...

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

    当需要查找附近的地铁站时,我们可以使用球面距离公式来计算两点之间的距离。在Java中,我们可以定义一个`getDistance2`方法来实现这个计算: ```java public static double getDistance2(double long1, double lat...

    数据挖掘的资料--关联规则算法

    5. **基于邻接表的改进FP_Growth算法**:邻接表是图论中的数据结构,可能被用于改进FP_Growth的存储和查找过程,以进一步提高处理大量数据时的效率。 6. **关联分类算法**:关联分类是关联规则学习与分类学习的结合...

    数据挖掘与数据分析应用案例 数据挖掘算法实践 基于C++的Apriori算法的数据挖掘关联规则.docx

    Apriori算法是一种常用的挖掘关联规则的算法,它通过先验性质简化了频繁项集的查找过程。该算法的核心思想是“如果某个项集是频繁的,那么它的所有子集也是频繁的”。Apriori算法通过迭代的方式找出所有满足最低支持...

    Java实现的aprior算法

    总之,通过Java实现的Apriori算法,我们可以深入分析超市商品的购买行为,发现商品之间的关联性,从而为商家提供精准的营销策略,例如商品捆绑销售或个性化推荐。此外,该算法还可以应用到其他领域,如电子商务、...

    大数据经典关联分析算法讲解(共19张PPT)精选.pptx

    为了解决这些问题,研究者提出了改进版的Apriori算法,例如通过映射事务数据库为布尔矩阵,利用向量运算来加速频繁项集的查找,以及动态内存分配来优化存储。这些改进显著提高了算法的运行效率,使得关联规则挖掘...

    apriori算法python实现.pdf

    总的来说,`Apriori` 算法在数据分析和市场篮子分析等领域有着广泛的应用,能够帮助商家发现消费者的购买行为模式,如“买了牛奶的人也常常买面包”。通过理解并实现这个算法,我们可以更好地挖掘隐藏在大量交易数据...

    基于Dijkstra算法在物流配送中的应用

    Dijkstra算法是一种用于查找图中两点间最短路径的经典算法,由荷兰计算机科学家Edsger W. Dijkstra于1956年提出。该算法的基本思想是从起始节点开始,逐步扩展到所有可达节点,直到找到终点为止。在此过程中,它会...

    数据挖掘算法概述.pptx

    关联规则挖掘的基本步骤包括查找频繁项集并生成满足条件的规则。 在寻找频繁项集的过程中,经典的算法如Apriori和FP-Growth被广泛使用。Apriori算法依赖于频繁项集的性质,即如果一个项集是频繁的,那么它的所有...

    大数据经典关联分析算法Apriori讲解.ppt

    算法从查找频繁1-项集(L1)开始,然后依次寻找频繁2-项集(L2)、频繁3-项集(L3),直到找不到新的频繁k-项集为止。每次查找新的Lk时,需要扫描一次数据库来计算支持度。 Apriori算法广泛应用于各个领域: 1. **...

    基于行为日志的电商推荐算法研究.pdf

    这意味着,通过用户行为日志获取的用户兴趣信息以及推荐算法的正确实施,可以有效地提高推荐系统的个性化水平,为用户提供更为准确的商品推荐,同时也为商家带来了更大的成交概率。 谢金峰作为该研究的作者,是...

Global site tag (gtag.js) - Google Analytics