`
lengrenhanbing
  • 浏览: 47847 次
  • 性别: Icon_minigender_1
  • 来自: 泰安
社区版块
存档分类
最新评论

使用Google map 绘制圆形

 
阅读更多

googl地图提供了google.maps.Circle类实现圆形叠加层的显示,详细的方法和属性可以参考google map Api.
实现绘制圆形只要知道圆心和半径即可,半径可以通过两个坐标点之间的距离求的。

根据两个经纬度来计算半径,方法如下:

function calculationDistance(lat1, lon1, lat2, lon2) {
    var R = 6371;//地球半径 km
    var dLat = (lat2 - lat1) * Math.PI / 180;
    var dLon = (lon2 - lon1) * Math.PI / 180;
    var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) +
        Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
        Math.sin(dLon / 2) * Math.sin(dLon / 2);
    var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
    var d = R * c;
    return d;
}
 

 

 对返回的值可以进行处理一下:

function getDistance(distance) {
    //大于1 保留两位小数
    if (distance > 1) return distance.toFixed(2) + "km";
    //小于1 表示不到1km,使用单位"m"
    else if (distance <= 1) return Math.round(distance * 1000) + "m";
}

 得到两点之间的半径了,就可以使用google map api 提供的方法显示圆形。

var drawCircle = function () {   
    var circle;
    google.maps.event.addListenerOnce(mapObj, "click", function (event) {  
        var radius = 0;
        var markerCenter = new google.maps.Marker({ position: event.latLng, map: mapObj, draggable: false });
        var markerRadius = new google.maps.Marker({ position: event.latLng, map: mapObj, draggable: true, title: title });  
        google.maps.event.addListener(markerRadius, 'drag', function (MouseEvent) {
            radius = calculationDistance(markerCenter.getPosition().lat(), markerCenter.getPosition().lng(), MouseEvent.latLng.lat(), MouseEvent.latLng.lng());
            circle.setRadius(radius * 1000); 
        });
        var circleOptions = {
            map: mapObj,
            center: event.latLng,
            radius: radius,
            strokeWeight: 0
        }; 
        circle = new google.maps.Circle(circleOptions);
     });
}

  在页面中添加按钮触发画圆事件,拖动标注进行画圆。

 

  • 大小: 81.1 KB
分享到:
评论
1 楼 jklzou3 2013-11-26  
求完整列子,麻烦发我邮箱248893697@qq.com

相关推荐

    vue2googlemap基于Vue2x和google地图组件

    下面将详细介绍Vue2googlemap的关键特性和使用方法。 1. **安装与配置** 安装Vue2googlemap通常通过npm进行,使用以下命令: ``` npm install vue2-google-map ``` 在项目中引入并注册该组件,确保已经获取到...

    C#winfrom调用谷歌地图API绘制可编辑圆形和多边形程序

    通过webbrowser加载html页面调用js的方式实现绘制可编辑圆形和多边形的功能。 要求:1.net 4.0 2.IE8以上 3.需要可以打开谷歌地图和谷歌开发key 4.因为是从之前的项目里剥离出来的,界面都是英文,不过不影响使用;

    js基于谷歌地图API绘制可编辑圆形与多边形

    在这个项目中,"js基于谷歌地图API绘制可编辑圆形与多边形"是一个典型的示例,它展示了如何利用谷歌地图API创建交互式的地图元素,特别是用户可以编辑的圆形和多边形。 首先,谷歌地图API是谷歌提供的一套...

    GoogleMap V3 中文 教程

    1. **绘制路径**:使用`google.maps.Polyline`类绘制路径,可以设置线的样式。 2. **驾车、步行、骑行路线**:通过`DirectionsService`和`DirectionsRenderer`对象获取和显示路线信息。 **七、事件处理** 1. **监听...

    谷歌地图API-google map api v3

    通过本文的介绍,我们详细了解了谷歌地图API V3的各个组成部分以及如何使用这些组件来创建丰富的地图应用。无论是基本的地图显示,还是复杂的路线规划和地理编码功能,谷歌地图API V3都为开发者提供了强大而灵活的...

    google map的开发辅助utils.zip

    这个"google map的开发辅助utils.zip"压缩包提供了一个开源项目——"android-maps-utils",它是对Google Maps Android API的一个便捷扩展,旨在简化开发过程,提高开发效率。 `android-maps-utils`库包含了一系列...

    谷歌电子围栏,添加修改多边形围栏,获取经纬度点

    然后,使用API的 `google.maps.Polygon` 类来创建并显示这个多边形。 其次,修改多边形主要涉及更新围栏区域的坐标。这可能是因为需要扩大或缩小围栏,或者调整其形状。修改多边形通常包括获取当前多边形的路径,...

    Google Maps Android API v2新API全部使用方法的Demo

    为了提高性能,可以使用GroundOverlay来添加图像覆盖层,使用Polygon或Circle来绘制多边形或圆形区域。还可以通过 fused location provider client 获取用户的位置信息,实现精确的定位服务。 本Demo涵盖了Google ...

    googlemap sdk for ios

    - 使用Google Maps SDK for iOS时,应遵守Google的使用条款和隐私政策。 - 对于大规模的商业应用,可能需要考虑成本,因为超出免费额度后,可能会产生费用。 - 定期更新SDK以获取最新的功能和性能优化。 总之,...

    react-reactgmapsReactjs的一个Google地图组件

    在React.js的世界里,开发...总的来说,`react-gmaps`是一个强大且易于使用的React组件,它极大地简化了在React应用中集成Google Maps的过程,为开发者提供了丰富的地图功能,帮助构建出具有地图功能的现代Web应用。

    谷歌MAP API_V3.pdf

    通过API,用户能够自定义地图样式、添加标记、绘制路线以及实现其他丰富的地图功能。 #### 二、核心概念及组件 ##### 1. Map - **MapOptions**: 定义地图初始化时的配置选项,包括中心位置、缩放级别等。 - `...

    谷歌地图离线API3.16.2+简单纠偏算法+画扇形

    在谷歌地图API中,画扇形通常涉及到对角度和弧度的理解,以及使用几何对象如圆形和路径。开发者可以利用API提供的`google.maps.Polygon`或`google.maps.Polyline`类来创建多边形或线,通过设置特定的坐标点来绘制...

    Google Maps API V3 中文参考文档(JavaScript)

    在 Google Maps API V3 中,Map 是地图的核心组件,提供了多种配置选项和事件监听器。开发者可以使用 MapOptions 对象来配置地图的基本属性,如中心点、缩放级别、地图类型等。同时,MapTypeId 对象提供了多种地图...

    前端开源库-react-google-maps

    5. Circle组件:用于绘制圆形区域,可以用于表示半径或地理范围。 三、使用方法 在项目中引入React-Google-Maps,首先需要安装库,通过npm或yarn命令进行: ```bash npm install react-google-maps # 或 yarn add...

    googleMapsApiv3实验小例子

    在给定的部分内容中可以看到,使用`google.maps.Map`方法来创建一个新的地图实例,并将其绑定到HTML页面中的`#map_canvas`元素上。 ```javascript var latlng = new google.maps.LatLng(30.277925, 120.177597); //...

    预览文章: 初学 Google Maps JavaScript (5) 画圆指定范围

    在本篇博客“初学 Google Maps JavaScript (5) 画圆指定范围”中,作者将引导初学者如何利用 Google Maps JavaScript API 来绘制圆形区域,这对于实现地理定位、地图覆盖层或者显示特定半径内的地点等功能非常有用。...

    Openlayers实现图形绘制

    例如,如果我们选择绘制圆形,可以使用`createRegularPolygon`方法: ```javascript if (value === 'Square') { value = 'Circle'; geometryFunction = ol.interaction.Draw.createRegularPolygon(4); } else if ...

    Google_MapsAPI_V3_叠加层

    Google Maps API V3 是一个强大的工具,用于在网页中集成交互式地图功能。在这个API的第三版中,重点...通过熟练掌握叠加层的使用,你可以创建出具有个性化地图元素和丰富交互性的地图项目,为用户提供独特的地图体验。

    great-circle-map:使用Google Maps API在机场之间绘制大圆路径的用户界面

    在这种类型的地图上,大的圆形路径即使实际上是笔直的,也往往看起来是弯曲的。 作为替代方案,该网站还具有3D地球视图,不存在该问题。 将3维球体投影到2维屏幕上总是会产生变形。 大多数世界地图都使用墨卡托...

    地图制造商覆盖「Map Maker Overlay」-crx插件

    在Google Map Maker中绘制圆圈可能很难正确。此扩展程序将显示一个覆盖在地图上的圆,在绘制诸如回旋处的圆时,可用于跟踪。您可以根据自己的喜好更改各种选项,以自定义叠加层。您可以选择覆盖任何图像并调整大小和...

Global site tag (gtag.js) - Google Analytics