Bing必应地图中国API - 在地图上画圆
Bing必应地图中国API - 在地图上画圆
2011-05-24 14:49:37| 分类: Bing&Google|字号 订阅
《变形金刚2》上映4日国内票房过亿,基本上我只能等盗版流出下载观看了。很多时候愿望很小,却不容易实现。比如我一直想写一篇博客,介绍一下在地图上画圆。这个想法来源于不止一个客户问起怎么在必应地图上实现区域搜索,比如搜索一个圆、长方形、多边形内的兴趣点。
于是衍生出来一个问题,微软必应地图为什么不提供更丰富的地图功能,比如测量两点之间的距离,画各种形状等等;
再衍生一个问题,不止一个朋友抱怨微软spcase越来越难用了,比QQ空间做的还差,为什么不这么做,为什么不那么做;
其实,如果微软什么都做了,什么都做得很好的话,就没有别的公司机会了。我常常和别人讲,在美国微软挣10块钱,要分给合作伙伴7块钱,因为我们知道很多事情应该交给合作伙伴去完成。
回到刚才的问题,微软必应地图是没有提供画圆的工具,但是我们提供了画圆的方法,或者画圆方法的方法。但是我们不一定需要在界面上给出这个功能,因为有人需要有人不需要。所以有需要的用户可以自己去实现,或者找合作伙伴去实现。
在地图上画圆更是一个数学算法问题,所以我就直接给出代码,大家直接拷贝下面的代码就行了。
function drawCircle(origin,radius)
{
var earthRadius = 6371;
//latitude in radians
var lat = (origin.Latitude*Math.PI)/180;
//longitude in radians
var lon = (origin.Longitude*Math.PI)/180;
//angular distance covered on earth's surface
var d = parseFloat(radius)/earthRadius;
var points = new Array();
for (i = 0; i <= 360; i++)
{
var point = new VELatLong(0,0)
var bearing = i * Math.PI / 180; //rad
point.Latitude = Math.asin(Math.sin(lat)*Math.cos(d) + Math.cos(lat)*Math.sin(d)*Math.cos(bearing));
point.Longitude = ((lon + Math.atan2(Math.sin(bearing)*Math.sin(d)*Math.cos(lat), Math.cos(d)-Math.sin(lat)*Math.sin(point.Latitude))) * 180) / Math.PI;
point.Latitude = (point.Latitude * 180) / Math.PI;
points.push(point);
}
var circle = new VEShape(VEShapeType.Polyline, points);
circle.HideIcon();
searchShapeLayer.AddShape(circle);
map.SetMapView(points);
}
上面的算法只是在地图上简单的画一个圆,位置和大小都固定的。有朋友会继续问,如何在地图用鼠标画圆,圆的大小随着鼠标移动而变化。这个问题需要研究一下鼠标事件的响应函数。同学们可以把它当做课后作业吧,呵呵。
进一步探讨如何搜索一个圆形区域内的兴趣点,其实就是判断兴趣点与圆心的距离是否小于半径。所以额外给出地球上两点之间距离的计算方法:
function distance(latlong,latlong2)
{
var lat1 = latlong.Latitude;
var lon1 = latlong.Longitude;
var lat2 = latlong2.Latitude;
var lon2 = latlong2.Longitude;
var earthRadius = 6371;
var factor = Math.PI/180;
var dLat = (lat2-lat1)*factor;
var dLon = (lon2-lon1)*factor;
var a = Math.sin(dLat/2) * Math.sin(dLat/2)+Math.cos(lat1*factor)*Math.cos(lat2*factor)*Math.sin(dLon/2) * Math.sin(dLon/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = earthRadius * c;
return d;
}
Bing必应地图中国API - 在地图上画圆的更多相关文章
- Bing必应地图中国API入门讲座之八:显示驾车路线
Bing必应地图中国API入门讲座之八:显示驾车路线 2011-05-24 14:47:36| 分类: Bing&Google|字号 订阅 这篇文章非常值得纪念,因为我是在Googl ...
- Bing必应地图中国API - 添加实时交通信息
Bing必应地图中国API - 添加实时交通信息 2011-05-24 14:44:58| 分类: Bing&Google|字号 订阅 2009年4月23日,微软必应地图中国API新 ...
- Bing必应地图中国API一显示地图 (转) 做人要厚道
Bing必应地图中国API一显示地图 2011-05-24 14:27:31| 分类: Bing&Google|字号 订阅 微软必应地图中国地图API发布已经有10天了,考虑到网上现 ...
- ie上画圆饼图
概述 主要运用到CSS3的transform.js.jq实现饼状图效果 详细 代码下载:http://www.demodashi.com/demo/10579.html 一.准备工作 1.主要运用到C ...
- Google地图接口API之地图类型(六)
1. Google 地图- 基本地图类型 Google Maps API 中提供了以下地图类型: MapTypeId.ROADMAP,用于显示默认的道路地图视图 MapTypeId.SATELLITE ...
- Google地图接口API之地图控件集(五)
1.默认控件集 当使用一个标准的google地图,它的控件默认设置如下: (1). Zoom-显示一个滑动条来控制map的Zoom级别,如下所示:
- Google地图接口API之地图事件(四)
演示几个地图事件: 1. 点击标记缩放地图 仍然使用上一遍文章使用的英国伦敦的地图.点用户点击标记时实现缩放地图的功能(点击标记时绑定地图缩放事件). 代码如下: <html> <h ...
- 百度地图坐标转换API和地图API
利用百度地图的服务将经纬度转换为米单位坐标 using System; using System.Collections.Generic; using System.Linq; using Syste ...
- [android学习]__使用百度地图开放api编写地图定位app
前言 在前面我已经记录关于如何使用百度地图api,以及如何配置相关的androidstudio配置了,接下来将记录如何使用百度地图api开发简单的地图定位apk,我将决定不定期持续更新本篇笔记,在每个 ...
随机推荐
- python在linux下的使用
1.查看python(解释器)的版本(什么版本的解释器支持哪一版版的语言标准) 一般在linux上已经预装了python,只要在Bash Shell中输入python,即可看到如下版本信息: 按Ctr ...
- 树莓派 - gpio-led platform driver 控制LED
树莓派3b板上有两个LED, pwr (power) 和 act (activity).是platform_driver gpio-led驱动. 可以通过设备树和gpio-led来额外控制一个LED. ...
- POJ3641 (快速幂) 判断a^p = a (mod p)是否成立
Description Fermat's theorem states that for any prime number p and for any integer a > 1, ap = a ...
- vue 子组件修改父组件变量问题
昨天遇到一个这样的场景, 主页面引用了一个子页面,子页面有个Redio选择,2个选项. 默认的,会从父组件传递一个参数给子组件作为默认值,实现默认选中效果,以及用来做反选. 开始没什么问题,页面都摆上 ...
- 莫比乌斯反演套路三、四--BZOJ2154: Crash的数字表格 && BZOJ2693: jzptab
t<=1e4个询问每次问n,m<=1e7,$\sum_{1\leqslant x \leqslant n,1 \leqslant y\leqslant m}lcm(x,y)$. 首先题目要 ...
- Spring3.2+mybatis3.2+Struts2.3整合配置文件大全
0.配置文件目录 1.Spring配置 applicationContext-dao.xml <?xml version="1.0" encoding="UTF-8 ...
- Linux下汇编语言学习笔记12 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- 高数(A)下 第十二章
12.1 12.2 12.3 12.4 12.5 12.6 自测题
- Linux下搭建maven私服Nexus 3.2.1-01
1. 私服介绍私服是指私有服务器,是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则, ...
- [Jexus系列] 一、安装并运行 Jexus
注意,本教程使用的jexus版本为5.8.3专业版,操作系统为 Ubunutu 16.04 64位 一.创建默认站点 不熟悉vim的可以看这个: vim超简单入门教程 sudo mkdir -p /v ...