返回顶部
首页 > 资讯 > 前端开发 > JavaScript >怎么用javascript实现地图API添加形状
  • 503
分享到

怎么用javascript实现地图API添加形状

2024-04-02 19:04:59 503人浏览 八月长安
摘要

这篇文章主要讲解了“怎么用javascript实现地图api添加形状”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用javascript实现地图API添

这篇文章主要讲解了“怎么用javascript实现地图api添加形状”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用javascript实现地图API添加形状”吧!

简介

您可以向地图添加各种形状。形状是地图上与某个纬度/经度坐标绑定的对象。可用的形状如下:线、多边形、圆和矩形。您还可以将形状配置为可供用户进行编辑或拖动。

多段线

如需在地图上绘制线,请使用多段线。 Polyline 类在地图上定义线性相连线段叠层。Polyline 对象包含一个 LatLng  位置数组,它创建的一系列线段以有序方式将这些位置连接起来。

1. 添加多段线

Polyline 构造函数带有一组用于指定线的 LatLng 坐标的 PolylineOptions,以及一组用于调整多段线视觉行为的样式。

Polyline 对象在地图上绘制为一系列直线线段。您可以在构建线时在PolylineOptions  内指定线描边的自定义颜色、粗细和不透明度,也可在构建后更改这些属性。多段线支持下列描边样式:

  • strokeColor 指定 "#FFFFFF" 格式的十六进制 html 颜色。Polyline 类不支持命名颜色。

  • strokeOpacity 指定一个介于 0.0 和 1.0 的数值,用于确定线颜色的不透明度。默认值为 1.0。

  • strokeWeight 指定线的宽度(单位:像素)。    
    多段线的 editable 属性指定用户是否可以编辑形状。请参阅下文的用户可编辑形状。同理,您也可以通过设置 draggable  属性来允许用户拖动线。 

//此示例创建一个2-pixel-wide红色线显示的路径威廉的***次跨越太平洋的飞行,途经奥克兰、CA、布里斯班、澳大利亚。 unction initMap() {  var map = new Google.maps.Map(document.getElementById('map'), {    zoom: 3,    center: {lat: 0, lng: -180},    mapTypeId: google.maps.MapTypeId.TERRaiN  });   var flightPlanCoordinates = [    {lat: 37.772, lng: -122.214},    {lat: 21.291, lng: -157.821},    {lat: -18.142, lng: 178.431},    {lat: -27.467, lng: 153.027}  ];  var flightPath = new google.maps.Polyline({    path: flightPlanCoordinates,    geodesic: true,    strokeColor: '#FF0000',    strokeOpacity: 1.0,    strokeWeight: 2  });   flightPath.setMap(map);

2. 移除多段线

如需移除地图中的多段线,请调用 setMap() 方法,并传递 null 作为其自变量。在下例中,flightPath 是一个多段线对象:

`flightPath.setMap(null);`         // This example adds a UI control allowing users to remove the polyline from the map.          var flightPath;     var map;     function initMap() {       map = new google.maps.Map(document.getElementById('map'), {         zoom: 3,         center: {lat: 0, lng: -180},         mapTypeId: google.maps.MapTypeId.TERRAIN       });            var flightPathCoordinates = [         {lat: 37.772, lng: -122.214},         {lat: 21.291, lng: -157.821},         {lat: -18.142, lng: 178.431},         {lat: -27.467, lng: 153.027}       ];            flightPath = new google.maps.Polyline({         path: flightPathCoordinates,         strokeColor: '#FF0000',         strokeOpacity: 1.0,         strokeWeight: 2       });            addLine();     }          function addLine() {       flightPath.setMap(map);     }          function removeLine() {       flightPath.setMap(null);     }

3. 检查多段线

多段线以 LatLng 对象数组形式指定一系列坐标。这些坐标决定线的路径。如需检索这些坐标,请调用 getPath(),后者将返回mvcArray  类型的数组。您可以利用下列操作操纵和检查该数组:

  • getAt() 返回给定以零为起点索引值处的 LatLng

  • insertAt() 在给定以零为起点索引值处插入传递的 LatLng。请注意,该索引值处的任何现有坐标都将前移

  • removeAt() 移除给定以零为起点索引值处的 LatLng

注:不能直接利用 mvcArray[i] 语法检索数组的第 i 个元素。您必须使用 mvcArray.getAt(i)。

// This example creates an interactive map which constructs a polyline based on // user clicks. Note that the polyline only appears once its path property // contains two LatLng coordinates.  var poly; var map;  function initMap() {   map = new google.maps.Map(document.getElementById('map'), {     zoom: 7,     center: {lat: 41.879, lng: -87.624}  // Center the map on Chicago, USA.   });    poly = new google.maps.Polyline({     strokeColor: '#000000',     strokeOpacity: 1.0,     strokeWeight: 3   });   poly.setMap(map);    // Add a listener for the click event   map.addListener('click', addLatLng); }  // Handles click events on a map, and adds a new point to the Polyline. function addLatLng(event) {   var path = poly.getPath();    // Because path is an MVCArray, we can simply append a new coordinate   // and it will automatically appear.   path.push(event.latLng);    // Add a new marker at the new plotted point on the polyline.   var marker = new google.maps.Marker({     position: event.latLng,     title: '#' + path.getLength(),     map: map   }); }

4. 定制多段线

可以向多段线添加符号形式的基于矢量的图像。您可以通过组合使用符号和 PolylineOptions  类对地图上多段线的外观进行充分的控制。请参阅符号,了解有关箭头、虚线、自定义符号及动画符号的信息。

多边形

多边形表示由闭合路径(或环路)封闭的区域,由一系列坐标定义。Polygon 对象与 Polyline  对象类似,因为它们都包含一系列有序的坐标。多边形使用描边和填充区绘制。您可以为多边形边缘(描边)定义自定义颜色、粗细和不透明度,以及为封闭区域(填充区)定义自定义颜色和不透明度。颜色应以十六进制  HTML 格式表示。不支持颜色名称。

Polygon 对象可描述复杂形状,其中包括:

  • 由单个多边形定义的多个不连续区域    
    带孔的区域    
    一个或多个区域的交集

1. 添加多变形

由于多边形区域可能包括几个不同路径,因此 Polygon 对象的 paths 属性指定的是数组的数组,每个数组的类型均为  MVCArray。每个数组定义的都是不同的有序 LatLng 坐标序列。

对于只包括一个路径的简单多边形,您可以利用单个 LatLng 坐标数组构建 Polygon。构建时,Google Maps JavaScript API  将在于 paths 属性内存储该简单数组时将其转换成数组的数组。API 为包括一个路径的多边形提供了一个简单的 getPath() 方法。

注:如果您以这种方式构建一个简单的多边形,仍需通过以 MVCArray 形式操纵路径来检索多边形的值。

多边形的 editable 属性指定用户是否可以编辑形状。请参阅下文的用户可编辑形状。同理,您也可以通过设置 draggable  属性来允许用户拖动形状。

// This example creates a simple polygon representing the Bermuda Triangle. function initMap() {     var map = new google.maps.Map(document.getElementById('map'), {         zoom: 5,         center: {             lat: 24.886,             lng: -70.268         },         mapTypeId: google.maps.MapTypeId.TERRAIN     });      // Define the LatLng coordinates for the polygon's path.     var triangleCoords = [{         lat: 25.774,         lng: -80.190     }, {         lat: 18.466,         lng: -66.118     }, {         lat: 32.321,         lng: -64.757     }, {         lat: 25.774,         lng: -80.190     }];      // Construct the polygon.     var bermudaTriangle = new google.maps.Polygon({         paths: triangleCoords,         strokeColor: '#FF0000',         strokeOpacity: 0.8,         strokeWeight: 2,         fillColor: '#FF0000',         fillOpacity: 0.35     });     bermudaTriangle.setMap(map); }

上例中的 Polygon 包含四组 LatLng  坐标,但请注意***组坐标和***一组坐标定义的位置相同,该位置用于完成环路。但在实践中,由于多边形定义的是封闭区域,因此您无需定指定***一组坐标。Google  Maps JavaScript API 将通过绘制一笔,将任何给定路径的***一个位置连回***个位置,自动完成多边形。

2. 移除多边形

如需移除地图中的多边形,请调用 setMap() 方法,并传递 null 作为其自变量。在下例中,bermudaTriangle  是一个多边形对象:

bermudaTriangle.setMap(null);

3. 检查多边形

多边形以数组的数组形式指定其坐标系列,其中每个数组的类型均为 MVCArray。每个“叶”数组都是一个指定单个路径的 LatLng  坐标数组。如需检索这些坐标,请调用 Polygon 对象的 getPaths() 方法。由于该数组是  MVCArray,您需要利用下列操作操纵和检查该数组:

  • getAt() 返回给定以零为起点索引值处的 LatLng

  • insertAt() 在给定以零为起点索引值处插入传递的 LatLng。请注意,该索引值处的任何现有坐标都将前移

  • removeAt() 移除给定以零为起点索引值处的 LatLng

矩形

除了 Polygon 泛型类外,Google Maps JavaScript API 还提供了*** Rectangle 对象简化其结构的类。

1. 添加矩形

Rectangle 与 Polygon  类似,您也可以为矩形边缘(描边)定义自定义颜色、粗细和不透明度,以及为矩形内区域(填充区)定义自定义颜色和不透明度。颜色应以十六进制数值 HTML  样式表示。

与 Polygon 不同的是,您无需为 Rectangle 定义 paths。与多边形不同,矩形具有一个 bounds 属性,通过为矩形指定  google.maps.LatLngBounds 来定义其形状。

矩形的 editable 属性指定用户是否可以编辑形状。请参阅下文的用户可编辑形状。同理,您也可以通过设置 draggable  属性来允许用户拖动矩形。

// This example adds a red rectangle to a map. function initMap() {     var map = new google.maps.Map(document.getElementById('map'), {         zoom: 11,         center: {             lat: 33.678,             lng: -116.243         },         mapTypeId: google.maps.MapTypeId.TERRAIN     });      var rectangle = new google.maps.Rectangle({         strokeColor: '#FF0000',         strokeOpacity: 0.8,         strokeWeight: 2,         fillColor: '#FF0000',         fillOpacity: 0.35,         map: map,         bounds: {             north: 33.685,             south: 33.671,             east: -116.234,             west: -116.251         }     }); }

2. 移除矩形

如需移除地图中的矩形,请调用 setMap() 方法,并传递 null 作为其自变量。

rectangle.setMap(null);

请注意,以上方法不会删除矩形,而只是从地图中移除矩形。如果您实际上是想删除矩形,则应先将其从地图中移除,然后将矩形本身设置为 null。

除了 Polygon 泛型类外,Google Maps JavaScript API 还提供了*** Circle 对象简化其结构的类。

1. 添加圆

Circle 与 Polygon  类似,您也可以为圆的边缘(描边)定义自定义颜色、粗细和不透明度,以及为圆内区域(填充区)定义自定义颜色和不透明度。颜色应以十六进制数值 HTML  样式表示。

与 Polygon 不同的是,您无需为 Circle 定义 paths。圆具有两个额外的形状定义属性:

  • center 指定圆中心的 google.maps.LatLng

  • radius 指定圆的半径(单位:米)    
    圆的 editable 属性指定用户是否可以编辑形状。请参阅下文的用户可编辑形状。同理,您也可以通过设置 draggable  属性来允许用户拖动圆。

// This example creates circles on the map, representing populations in North // America.  // First, create an object containing LatLng and population for each city. var citymap = {   chicago: {     center: {lat: 41.878, lng: -87.629},     population: 2714856   },   newyork: {     center: {lat: 40.714, lng: -74.005},     population: 8405837   },   losangeles: {     center: {lat: 34.052, lng: -118.243},     population: 3857799   },   vancouver: {     center: {lat: 49.25, lng: -123.1},     population: 603502   } };  function initMap() {   // Create the map.   var map = new google.maps.Map(document.getElementById('map'), {     zoom: 4,     center: {lat: 37.090, lng: -95.712},     mapTypeId: google.maps.MapTypeId.TERRAIN   });    // Construct the circle for each value in citymap.   // Note: We scale the area of the circle based on the population.   for (var city in citymap) {     // Add the circle for this city to the map.     var cityCircle = new google.maps.Circle({       strokeColor: '#FF0000',       strokeOpacity: 0.8,       strokeWeight: 2,       fillColor: '#FF0000',       fillOpacity: 0.35,       map: map,       center: citymap[city].center,       radius: Math.sqrt(citymap[city].population) * 100     });   } }

2. 移除园

如需移除地图中的圆,请调用 setMap() 方法,并传递 null 作为其自变量。

circle.setMap(null);

请注意,以上方法不会删除圆,而只是从地图中移除圆。如果您实际上是想删除圆,则应先将其从地图中移除,然后将圆本身设置为 null。

可由用户编辑和拖动的形状

将形状设置为可编辑会给形状添加手柄,用户可以利用手柄直接在地图上对形状进行位置调整、重新塑形和尺寸调整。您还可以将形状设置为可拖动,以便用户将其移至地图上的其他地点。

用户对对象做出的更改无法跨会话存留。如果您想保存用户的编辑,必须自行采集和存储信息。

1. 将形状设置为可编辑

可通过在形状的选项中将 editable 设置为 true,将任何形状(多段线、多边形、圆和矩形)设置为可由用户编辑。

2. 将形状设置为可拖动

默认情况下,在地图上绘制的形状位置固定。如需允许用户将形状拖动到地图上的其他位置,请在形状的选项中将 draggable 设置为true。

3. 侦听编辑事件

编辑形状时,会在编辑完成时触发事件。下面列出了这些事件。

形状事件
radius_changed、center_changed
多边形insert_at、remove_at、set_at,必须在多边形的路径上设置侦听器,如果多边形有多个路径,必须在每个路径上设置侦听器
多段线insert_at、remove_at、set_at,必须在多段线的路径上设置侦听器
矩形bounds_changed

一些相关的代码段:

google.maps.event.addListener(circle, 'radius_changed', function() {   console.log(circle.getRadius()); });  google.maps.event.addListener(outerPath, 'set_at', function() {   console.log('Vertex moved on outer path.'); });  google.maps.event.addListener(innerPath, 'insert_at', function() {   console.log('Vertex removed from inner path.'); });  google.maps.event.addListener(rectangle, 'bounds_changed', function() {   console.log('Bounds changed.'); });

4. 侦听拖动事件

拖动形状时,会在拖动操作开始和结束时以及拖动期间触发事件。对于多段线、多边形、圆和矩形,将会触发下列事件。

事件说明
dragstart当用户开始拖动形状时触发
drag在用户拖动形状期间反复触发
dragend当用户停止拖动形状时触发

感谢各位的阅读,以上就是“怎么用javascript实现地图API添加形状”的内容了,经过本文的学习后,相信大家对怎么用javascript实现地图API添加形状这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: 怎么用javascript实现地图API添加形状

本文链接: https://lsjlt.com/news/86312.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么用javascript实现地图API添加形状
    这篇文章主要讲解了“怎么用javascript实现地图API添加形状”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用javascript实现地图API添...
    99+
    2024-04-02
  • JavaScript实现点击改变图片形状(transform应用)
    JavaScript之点击改变图片形状(transform的应用),供大家参考,具体内容如下 附上代码: <!DOCTYPE html> <html lang=...
    99+
    2024-04-02
  • 怎么用Windows api添加一个图片
    要使用Windows API在窗口中添加图片,你可以按照以下步骤进行操作:1. 首先,确保你已经包含了 `windows.h` 头文...
    99+
    2023-10-09
    Windows
  • Android用RecyclerView实现动态添加本地图片
    本文介绍了Android用RecyclerView实现动态添加本地图片,分享给大家,具体如下:本文所用的多图选择的library来自:https://github.com/lovetuzitong/MultiImageSelector简单介...
    99+
    2023-05-30
    android 动态 添加图片
  • android实现状态栏添加图标的函数实例
    本文实例讲述了android实现状态栏添加图标的函数。分享给大家供大家参考。具体如下: private void showNotification() { // 创建一个...
    99+
    2022-06-06
    函数 状态栏 Android
  • 怎么用php实现添加图片功能
    使用PHP语言实现添加图片功能比较简单,下面将介绍一种基于Web的PHP添加图片功能的实现方法。步骤一:设置表单在一个HTML文件中,创建一个form表单,设置enctype为“multipart/form-data”。这个用于告诉服务器,...
    99+
    2023-05-14
    php
  • 怎么用css实现凸字形状
    这篇文章主要介绍了怎么用css实现凸字形状,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   代码在这儿:   <divclass...
    99+
    2024-04-02
  • android实现添加耳机状态图标的方法
    本文实例讲述了android实现添加耳机状态图标的方法。分享给大家供大家参考。具体如下: 原生态的android系统是没有耳机插入或未插入的状态指示的,本文就是讲解如何添加耳机...
    99+
    2022-06-06
    耳机 状态图 方法 Android
  • JavaScript中怎么接入百度地图API
    这期内容当中小编将会给大家带来有关JavaScript中怎么接入百度地图API,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、百度地图API接入搜索百度地图开发平台注册百度账号登陆并申请成为开发者在百度...
    99+
    2023-06-20
  • 怎么用vbs实现本地添加用户的脚本
    这篇文章给大家分享的是有关怎么用vbs实现本地添加用户的脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Dim WshShell set WshShell = ...
    99+
    2023-06-08
  • CSS怎么实现各种形状
    这篇文章给大家分享的是有关CSS怎么实现各种形状的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS实现各种形状的方法:1、圆形在设置CSS时要设置宽度和高度相等,然后设置【border-radius】属性为宽度...
    99+
    2023-06-14
  • 怎么用JavaScript实现网页视频添加水印
    这篇“怎么用JavaScript实现网页视频添加水印”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用JavaScript...
    99+
    2023-06-29
  • JavaScript怎么实现图片懒加载
    本篇内容介绍了“JavaScript怎么实现图片懒加载”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!实现思路实现图片懒加载我们需要先明白具体...
    99+
    2023-07-02
  • 怎么用Vue+OpenLayer为地图添加风场效果
    这篇“怎么用Vue+OpenLayer为地图添加风场效果”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Vue+Open...
    99+
    2023-06-30
  • 百度地图API之地图标注怎么用
    这篇文章给大家分享的是有关百度地图API之地图标注怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。标注概述标注(Marker)是用来表示一个点位置的可见元素,每个标注自身都包...
    99+
    2024-04-02
  • 怎么用clip-path实现CSS形状变换
    这篇文章主要讲解了“怎么用clip-path实现CSS形状变换”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用clip-path实现CSS形状变换”吧!...
    99+
    2024-04-02
  • VueElement-ui实现树形控件节点添加图标详解
    目录1.效果图2.树形表格绑定数据加标签3.所有代码其他实现总结1.效果图 2.树形表格绑定数据加标签 想要在树形控件的树节点加上图片或者element-ui的图标,可以在树形表格...
    99+
    2024-04-02
  • Linq结果集形状怎么实现
    这篇文章主要介绍“Linq结果集形状怎么实现”,在日常操作中,相信很多人在Linq结果集形状怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Linq结果集形状怎么实现”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-17
  • 怎么用Canvas API操作图形旋转
    本篇内容主要讲解“怎么用Canvas API操作图形旋转”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Canvas API操作图形旋转”吧! 关于对象的...
    99+
    2024-04-02
  • 怎么用HTML5的Canvas API绘制图形
    本篇内容介绍了“怎么用HTML5的Canvas API绘制图形”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作