`

google maps 实现带箭头的线完整实例

阅读更多

google maps 实现带箭头的线完整实例

注:实例中没有画线,因为画线google API中有,很容易实现,关键是用箭头表示方向。

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml">  
  <head>  
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>  
    <title>Google Maps JavaScript API Example</title>  
    <script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=ABQIAAAA4ZZxnijCQhlZlf57igoGExTwM0brOpm-All5BF6PoaKBxRWWERR0mYEVnCnlZi8Qmoq3uoivZ9cIgQ
            type="text/javascript"></script>  
    <script type="text/javascript">  
    //<![CDATA[  
  var map = null;
  var arrowIcon = null;
    function load() {  
      if (GBrowserIsCompatible()) {  
        map = new GMap2(document.getElementById("mapdiv")); 
        map.setCenter(new GLatLng(39.917, 116.397), 5);
  //箭头图标
        arrowIcon = new GIcon();
        arrowIcon.iconSize = new GSize(24,24);
        arrowIcon.shadowSize = new GSize(1,1);
        arrowIcon.iconAnchor = new GPoint(12,12);
        arrowIcon.infoWindowAnchor = new GPoint(0,0); 
      }
   var point1 = new GLatLng(39.917, 116.397);
  var gmarker = new GMarker(point1);
  map.addOverlay(gmarker);

  var point2 = new GLatLng(38.017, 116.217);
  map.addOverlay(new GMarker(point2));

  var point3 = new GLatLng(38.017, 115.217);
  map.addOverlay(new GMarker(point3));

  var points = [point1,point2,point3];
  //arrowHead(points);
  midArrows(points);
  
 }
     

        //一个箭头
        function arrowHead(points)
        {
            var p1=points[points.length-1];
            var p2=points[points.length-2];
            var dir = bearing(p2,p1);
            var dir = Math.round(dir/3) * 3;
            while (dir >= 120) {dir -= 120;}

            arrowIcon.image = "http://www.google.com/intl/en_ALL/mapfiles/dir_"+dir+".png";
            map.addOverlay(new GMarker(p1, arrowIcon));
        }

        //多个箭头
        function midArrows(points)
        {
   if(points.length < 2) return;

            for (var i=1; i < points.length; i++)
            {
                var p1=points[i-1];
                var p2=points[i];
                var dir = bearing(p1,p2);
                var dir = Math.round(dir/3) * 3;
                while (dir >= 120) {dir -= 120;}

                arrowIcon.image = "http://www.google.com/intl/en_ALL/mapfiles/dir_"+dir+".png";
                map.addOverlay(new GMarker(points[i], arrowIcon));
            }
        }

        var degreesPerRadian = 180.0 / Math.PI;
        function bearing( from, to )
        {
            var lat1 = from.latRadians();
            var lon1 = from.lngRadians();
            var lat2 = to.latRadians();
            var lon2 = to.lngRadians();

            var angle = - Math.atan2( Math.sin( lon1 - lon2 ) * Math.cos( lat2 ), Math.cos( lat1 ) * Math.sin( lat2 ) - Math.sin( lat1 ) * Math.cos( lat2 ) * Math.cos( lon1 - lon2 ) );
            if ( angle < 0.0 )
                angle += Math.PI * 2.0;
            angle = angle * degreesPerRadian;
            angle = angle.toFixed(1);

            return angle;
        }

    //]]>  
    </script>  
  </head>  
  <body onload="load()" onunload="GUnload()">  
    <div id="mapdiv" style="width: 800px; height: 600px"></div>
  </body>  
</html> 

分享到:
评论

相关推荐

    谷歌地图API实现运行轨迹 画箭头操作的小例子

    在这个特定的例子中,我们将深入探讨如何使用谷歌地图API来实现运动轨迹的绘制以及在轨迹上添加箭头指示方向。 首先,我们需要在网页上加载谷歌地图API。这通常通过在HTML文件中插入一个JavaScript标签来完成,其中...

    gmaps-labels-arrows:一个实用程序库,可在Google Map顶部显示带有箭头的标签

    Google地图上的标签和箭头这是一个非常简单的库,可以帮助您在Google Map顶部放置一些带有箭头的标签,如下所示:用法首先,将LabelingManager的实例添加到google.maps.Map的实例。 之后,您可以根据需要创建...

    google地图js-展示站点标示和移动增加标示,相当经典

    在IT行业中,Google地图API是开发人员常用的工具之一,它允许我们通过JavaScript来与Google地图进行交互,实现各种自定义功能。在这个特定的场景中,我们关注的是如何使用Google地图JavaScript API来展示站点标识,...

    Android 之callout实现

    Callouts通常包含一个指向被标注对象的箭头或指示线,以及一个包含详细信息的小窗口。本篇文章将深入探讨如何在Android应用中实现callout功能。 一、Android Callout基础 在Android中,callout可以使用自定义View...

    swift-ARCarMovement这是Google地图上的车辆移动导航示例

    通过学习和分析ARCarMovement这个示例项目,开发者不仅可以掌握ARKit和Google Maps API的结合使用,还能了解到如何在Swift中实现高效、互动的AR导航应用。此外,这个项目也是一个很好的实践案例,有助于提升在Swift...

    谷歌地图API参考(中文版)

    `GMapOptions`类是Google Maps API中一个非常重要的组成部分,它主要用于为`GMap2`类的构造函数提供一系列可选参数,帮助开发者更灵活地配置地图的各种属性。 - **属性介绍** - **size**:此属性用于设定地图的...

    android 移动地图

    Google Maps的AR导航功能就是一个很好的实例,它将指示箭头叠加在真实环境中,帮助用户更直观地找到方向。实现AR地图需要: 1. 获取摄像头权限:在AndroidManifest.xml中添加CAMERA权限。 2. 集成ARCore:Google的AR...

    前端开源库-markerwithlabel.zip

    3. **添加到地图**:将创建好的MarkerWithLabel对象添加到Google Maps实例的地图对象上,通过`map.addOverlay`方法实现。 4. **事件处理**:可以绑定鼠标事件监听器,比如`click`或`mouseover`,以便在用户与标记...

    ARNavigationWithGoogleMaps:一个iOS增强现实应用程序,可以从一个地方导航到另一个地方

    "ARNavigationWithGoogleMaps"不仅展示了AR技术在导航领域的应用潜力,也为开发者提供了一个学习和实践ARKit、Google Maps API及MVVM架构的实例。在未来,随着AR技术的进一步发展,类似的应用将在更多场景中发挥重要...

    浅谈vue方法内的方法使用this的问题

    var latLng = new google.maps.LatLng(aa[1], aa[0]); var infoWindow = new google.maps.InfoWindow({ content: "当前位置: 经度:" + pos.lat + " 维度:" + pos.lng }); infoWindow.setPosition...

    简单实用的抽屉效果.zip

    这种效果常见于许多应用程序中,如Google Maps、Facebook等,允许用户从屏幕边缘滑动以显示额外的选项或功能。 DrawerLayout是属于`android.support.v4.widget`包的一部分,它支持Android的Material Design设计...

    toolbar_drawerlayout

    而`DrawerLayout`则是一个侧滑抽屉式菜单,常用来实现类似Google Maps那样的导航栏,可以轻松地从屏幕边缘滑出或隐藏。 `ToolBar`是Android应用中的主要导航元素,它可以显示应用的标题、图标、操作按钮等。开发者...

    Javascript 特效大全 (343个)

    13. **地图插件**:集成Google Maps或其他地图服务,实现地理位置相关的交互功能。 压缩包中的文件如`dir.htm`、`main.htm`、`index-frameset.htm`、`index.htm`可能是目录页或示例页面,它们可能展示了所有特效的...

    gps实时定位

    1. 选择地图库:有许多地图库可供选择,如Google Maps SDK、Apple的MapKit或开源的Mapbox。在这里,我们以MapKit为例,它是iOS开发中的内置地图解决方案。 2. 添加地图视图:在Xcode项目中,你需要在故事板或代码中...

    jonnyscholes.com

    9. **第三方库和API**:如Google Maps API、Social分享按钮等可能被集成,为网站添加额外的功能。 10. **错误处理和调试**:使用console.log、try/catch等手段进行代码调试,确保网站在各种情况下能稳定运行。 总的...

    Angular-States-Game:这是一款测试你说出美国所有 50 个州的名字的游戏

    为了实现地图效果,可能采用了SVG(可缩放矢量图形)或者外部API如Google Maps API,允许用户点击各个州进行选择。 在游戏逻辑方面,开发者可能会使用Angular的生命周期钩子,如ngOnInit和ngOnChanges,来初始化...

    weparty:基于nodejs服务器的LBS社交程序

    为了实现这些功能,Weparty可能需要集成第三方地图API,如Google Maps或高德地图,用于地理编码、反编码以及距离计算等。 此外,Weparty还需要一个稳定可靠的数据库系统来存储用户信息、社交关系、活动数据等。...

    restaurant-mockup:使用 HTML、CSS 和 JS 创建的餐厅模型网站

    为了显示餐厅的位置,项目可能集成了Google Maps API或其他类似服务。通过JavaScript API,可以在页面上嵌入地图,设置标记以指示餐厅的具体位置,还可以添加交互功能,如缩放、平移等。 6. **图库** 图库可能是...

    COVID-19-project:使用React Native在埃及应用中跟踪COVID-19

    为了展示疫情在地理上的分布,项目可能使用了Google Maps API或者Mapbox等地图服务,将疫情数据以标记或热力图的形式展示在地图上。 **测试与调试** React Native提供了模拟器和真机调试工具,开发者可以通过它们...

    city-explorer-api

    - **地图API**:如Google Maps或OpenStreetMap,用于显示地理位置和相关数据。 - **异步编程**:使用Promise或async/await处理异步操作,如等待API响应。 - **路由管理**:如果项目包括多个页面,可能使用了如...

Global site tag (gtag.js) - Google Analytics