WebGIS第八课:地图覆盖物-两点拖拽测距

这个应用很有实战意义,比如特斯拉的地图APP,连个简单的测距报警都没有,这一直是我想要的功能。

步骤如下:

1 创建两个点

2 准备一条线

3 准备文本

4 计算距离

下面开始。

# 1 创建两个点

采用赋值的方法直接创建

之后可以调试一下,看是否正常显示

# 2 创建一条线

这里还是采用赋值来创建线,由于后续要根据点的位置动态调整线,所以这里先不给定具体坐标,只是对样式进行规定。

# 3 创建文本

就是用来显示距离的。这里也和线一样,他需要动态调整,到时候就显示在两点中间位置就行。

# 4 计算距离,就是根据两个点的经纬度来直接调用函数计算。可以写为函数。

写为函数的好处是,不仅封装了计算过程,还可以结合前面线和文本来具体制定他们的位置。

这就是最后做出来的效果,通过拖动点位,实时计算距离。

先把代码附上:

<script>
    // 创建地图对象
    var map = new AMap.Map('container',{
        center:[116.39,39.9],
        zoom:15,
        viewMode:'2D',
    })

    // 创建两个点
    var m1 = new AMap.Marker({
        map:map,
        draggable:true,
        position:new AMap.LngLat(116.39,39.9),
    })
    var m2 = new AMap.Marker({
        map:map,
        draggable:true,
        position:new AMap.LngLat(116.394,39.9),
    })

    // 根据覆盖物调整地图显示范围
    map.setFitView()

    // 准备一条线
    var line = new AMap.Polyline({
        strokeColor:'#80d8ff',
        isOutline:true,
        outerlineColor:'white',

    })
    line.setMap(map)

    // 准备一个文本
    var text = new AMap.Text({
        text:'',
        style:{
            'background-color':'#29b6f6',
            'border-color':'#e1f5fe',
            'font-size':'16px',
        },
    })
    text.setMap(map)

    // 计算
    function compute(){
        // 得到m1 和 m2 的经纬度
        var p1 = m1.getPosition()
        var p2 = m2.getPosition()
        // 将text文本显示在两个经纬度的中间
        var textPos = p1.divideBy(2).add(p2.divideBy(2)) //(p1+p2)/2
        var dist = Math.round( p1.distance(p2) )
        var path = [p1, p2]
        line.setPath(path) // 绘制线段
        text.setText('距离为'+dist+'米')
        text.setPosition(textPos)
    }
    compute()
    m1.on('dragging',compute)
    m2.on('dragging',compute)


</script>

这里需要注意的是,在compute函数里,先是计算了m1和m2两点的距离,然后又计算了线段和文本的位置。

函数定义好之后,通过调用,来获取线段和文本的显示。

之后,给两个点的拖动事件绑定函数,这样每次拖动之后,线段和文本就是实现了动态更新。

PS 这里出现了个小bug,就是拖动点位后,线段和文本不更新!

找了半天解决方案,发现是需要在compute()后面加上分号;

就好了。但是我看李老师的示例,确实没有啊,我就又把分号去掉了

这时候,我发现,地图bug就不存在了,好神奇啊,到底是什么鬼。

好吧 既然好了,就算是已经弄痛了这个案例。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: WebGIS是一种基于Web平台的地理信息系统(GIS),而ArcGIS则是一个广泛应用的GIS软件平台,其中包含了WebGIS的功能。 WebGIS通过基于Internet的技术,将地理信息系统的功能和数据传递到互联网上,使得用户可以通过浏览器访问和使用地理信息。它可以实现地图浏览、查询、分析、编辑、协作和数据共享等功能。WebGIS具有易操作、易共享和多平台支持的特点,用户无需安装任何软件,只要有网络连接和浏览器,就可以随时随地访问地理信息。 而ArcGIS是一套由Esri(Environmental Systems Research Institute)公司开发和推出的GIS软件平台。ArcGIS具有强大的数据管理、地图制作、空间分析和建模等功能,广泛应用于地理信息领域。ArcGIS具备可视化界面和丰富的功能工具,支持多种地图数据格式以及各种地理处理功能。同时,ArcGIS还提供了丰富的扩展和定制功能,可以满足用户的个性化需求。 通过结合WebGIS和ArcGIS,用户可以在Web平台上使用ArcGIS的功能,实现地理信息的在线浏览、查询和分析。将ArcGIS应用于WebGIS中,可以实现GIS数据和功能的在线共享和协作,方便用户进行地理数据的管理、编辑和分析。另外,ArcGIS的强大的数据处理和空间分析功能也可以为WebGIS提供更多的分析和决策支持。 总之,在WebGIS中,ArcGIS作为一种常用的GIS软件平台,拥有丰富的数据处理、地图制作和空间分析功能,在Web平台上能够满足用户对地理信息的在线浏览、查询和分析的需求,为用户提供了更加便捷和高效的地理信息服务。 ### 回答2: WebGIS指的是基于Web的地理信息系统,它结合了互联网、地理信息系统和地理数据,提供了一种灵活的方式用于展示、查询和分析地理数据。而ArcGIS则是一种很常见且功能强大的地理信息系统软件,它被广泛用于数据收集、地图制作、空间分析等地理信息工作。WebGIS通常可以使用ArcGIS软件来创建和管理地理数据,然后通过WebGIS的方式将这些地理数据展示在网页上以供用户访问和使用。 使用WebGIS和ArcGIS,可以实现以下功能: 1. 地图展示:通过WebGIS和ArcGIS,可以将地理数据以地图的形式展示在网页上,用户可以通过缩放、移动地图来浏览不同的地理区域。 2. 地理数据查询:用户可以通过WebGIS界面对地理数据进行查询,例如查询某个位置附近的特定设施、查询特定地区的土地利用状况等。 3. 空间分析:WebGIS和ArcGIS具备强大的空间分析功能,用户可以对地理数据进行传统的空间分析,如缓冲区分析、空间插值等。 4. 数据编辑和更新:通过WebGIS和ArcGIS,用户可以对地理数据进行编辑和更新,这样就可以保证地理数据的及时性和准确性。 5. 地理数据共享与协作:WebGIS和ArcGIS可以实现多人共享和协作,用户可以将自己创建和管理的地理数据在WebGIS上分享给其他用户,实现地理信息的共享与交流。 总结来说,WebGIS通过结合互联网和地理信息系统的技术,使地理数据的展示、查询和分析更加灵活和便捷。而ArcGIS作为一种地理信息系统软件,为WebGIS实现提供了强大的支持和工具。 ### 回答3: WebGIS是一种利用Web技术实现的地理信息系统,而ArcGIS则是Esri公司开发的一套常用的地理信息系统软件。WebGIS利用互联网的优势,使得地理信息数据和功能可以通过Web浏览器进行访问和使用,降低了地理信息系统的门槛,方便了用户的交互和协作。 ArcGIS作为一种功能强大的地理信息系统软件,具有许多强大的空间分析和地图制作功能。它支持从各种数据源导入和管理地理信息数据,如地形、遥感影像、地形、GPS数据等。用户可以使用ArcGIS来进行空间分析,如地理编码、缓冲区分析、路径分析等。同时,ArcGIS也提供了丰富的地图制作功能,用户可以根据需要自定义地图样式、添加标注、绘制符号等。此外,ArcGIS还支持将地理信息数据发布为Web服务,供用户通过WebGIS进行访问和使用。 WebGIS和ArcGIS的结合,使得地理信息系统的应用更加便捷和灵活。通过WebGIS,用户可以通过浏览器访问和使用ArcGIS提供的功能和数据,不再需要安装和维护独立的地理信息系统软件。同时,WebGIS还提供了地理信息的在线共享和协作功能,用户可以通过Web进行地图编辑、数据分析和分享,实现团队协作和资源共享。 总之,WebGIS和ArcGIS的结合,在地理信息系统的应用中起到了重要的作用。它们通过互联网技术和强大的地理信息处理能力,使地理信息数据和功能可以方便、快捷地通过Web浏览器访问和使用,满足用户对地理信息的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Intimes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值