西藏巴青项目

集中化GIS系统JSAPI接口文档-提取.txt 49KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363
  1. -1143000中国移动集中化GIS平台JSAPI接口协议
  2. 中国移动集中化GIS平台JSAPI接口协议
  3. 地图JS API是一套用JavaScript 语言编写的应用程序接口(下文简称JSAPI),您可以通过各种API接口向地图添加内容、进行数据搜索计算,创建功能丰富、交互性强的地图应用。JS API提供了地图展现、地图描画等丰富的插件功能。
  4. 本文档适用于熟悉JavaScript 编程和了解面向对象概念的读者。此外,读者还应该对地图产品有一定的了解。
  5. JSAPI部署在GIS服务上,通过在HTML页面中调用。在页面添加 JS API 的入口脚本标签,并将其中「您的服务地址」替换为部署JSAPI引擎的部署地址。
  6. #container {width:300px; height: 180px; }
  7. 添加div标签作为地图容器,同时为该div指定id属性;
  8. 为地图容器指定高度、宽度;
  9. 介绍地图展示、地图事件、地图坐标、地图控件接口开发参考。
  10. 地图展示
  11. 地图对象类,封装了地图的属性设置、图层变更、事件交互等接口的类。
  12. cmmapgl.Map(container:String/HTMLDivElement, opts:MapOptions)
  13. 构造一个地图对象,参数container中传入地图容器DIV的ID值或者DIV对象,opts地图初始化参数对象,参数详情参看MapOptions列表。
  14. MapOptions
  15. cmmap GL JS进行地图渲染的HTML元素,或该元素的字符id。该指定元素不能有子元素。
  16. container
  17. HYPERLINK "https://developer.mozilla.org/docs/Web/HTML/Element" HTMLElement / HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String" string
  18. 地图最小缩放级别(0-24)默认2;
  19. 地图显示的缩放级别,地图初始化时的层级。如果构造函数的参数中没有设置zoom cmmap GL JS会在地图样式中进行查找。如果样式中也没定义的话,那么它将默认为2。
  20. 地图中心点坐标值。如果构造函数的参数中没有设置center,cmmap GL JS 会在地图样式中进行查找。如果样式中也没定义的话,那么它将默认为[0, 0]。注: 为了与GeoJSON 保持一致,cmmap GL采用经度、纬度的顺序(而不是纬度,经度)。
  21. 地图最大缩放级别(0-24)默认18;
  22. 地图最小倾斜角度 (0-85)默认0;
  23. 地图最大倾斜角度(0-85)默认85;
  24. 地图的 cmmap 配置样式。它必须是一个符合 HYPERLINK "https://mapbox.com/mapbox-gl-style-spec/" cmmap样式规范的 JSON 对象,或者是一个指向该JSON的URL地址。
  25. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" Object /String
  26. 关于矢量切片样式优化的内容,请查阅相关MVT规范定义 HYPERLINK "https://www.mapbox.com/api-documentation/maps/" \l "retrieve-tiles" 文档.
  27. 如果为true,地图的位置 (包括缩放层级、中心纬度、中心经度、方位角和倾角) 将会与页面URL的哈希片段同步。例如,http://path/to/my/page.html#2.59/39.26/53.07/-24.1/60
  28. 如果为false,地图将不会绑定对鼠标、触碰、键盘的监听,因此地图将不会响应任何用户交互。
  29. 定义何时地图的方位将自动对齐到正北方向的阈值(以度为单位)。例如,当bearingSnap为7时,如果用户将地图转动到正北方向7度以内的范围时,地图将自动恢复对齐到正北方向。
  30. 如果为false,将不会在"拖拽进行地图旋转"的同时控制地图的倾斜。
  31. 当用户点击地图时鼠标移动的最大像素范围,点击地图后鼠标在此像素范围内移动则被认为是一次有效的点击(不是拖拽)。
  32. 如果为true, HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "attributioncontrol" AttributionControl将会被添加到地图上。
  33. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String" String / HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array" Array
  34. 在 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "attributioncontrol" AttributionControl中显示的字符串或字符串数组。仅当options.attributionControl为true时生效。
  35. 如果为true,当cmmap GL JS 的性能远远低于预期的时候,地图将创建失败。(此时可能是用的软件渲染器)。
  36. 如果为true,地图画布可通过map.getCanvas().toDataURL()输出PNG。出于性能优化考虑,该值默认为false。
  37. 如果为true,gl渲染环境在创建时将开启多重采样抗锯齿模式(MSAA),这对自定义图层的抗锯齿十分有效。出于性能优化考虑,该值默认为false。
  38. 如果为false,一旦切片的HTTP cacheControl/expires headers过期,地图将不会重新请求这些切片。
  39. 地图最大边界范围,用与设置底图显示的最大范围,v1、v2、v3形式均可(顺序左下,右上两个点位)。
  40. const v1 = new cmmapgl.LngLatBounds(
  41. new cmmapgl.LngLat(112.9876, 40.7661),
  42. new cmmapgl.LngLat(113.9397, 40.8002)
  43. const v2 = new cmmapgl.LngLatBounds([112.9876, 40.7661], [113.9397, 40.8002]);
  44. 如果为true,将启用"滚轮缩放地图"交互模式。如果传值为Object对象,对象可选参数参考 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "scrollzoomhandlerenable" ScrollZoomHandler#enable。
  45. 如果为true, 将启用"框选缩放地图"交互模式(查阅 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "boxzoomhandler" BoxZoomHandler)。
  46. 如果为true, 将启用"拖拽旋转地图"交互模式(查阅  HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "dragrotatehandler" DragRotateHandler)。
  47. 如果为true, 将启用"拖拽移动地图"交互模式(查阅 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "dragpanhandler" DragPanHandler)。
  48. 如果为true,将启用键盘快捷键功能(查阅 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "keyboardhandler" KeyboardHandler)。
  49. 如果为true,将启用"双击缩放地图"交互模式(查阅 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "doubleclickzoomhandler" DoubleClickZoomHandler)。
  50. 如果为true,将启用"旋转、缩放"交互模式。如果传值为Object对象,对象可选参数参考 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "touchzoomrotatehandlerenable" TouchZoomRotateHandler#enable。
  51. 如果为true,则启用“倾斜度”交互模式。对象可选参数参考 HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/api/handlers/" \l "touchpitchhandler#enable" TouchPitchHandler 。
  52. 如果为true,地图将自适应窗口大小变化。
  53. 地图初始化时的方位角(旋转角度),以正北方的逆时针转动度数计量。如果构造函数的参数中没有设置bearing,cmmap GL JS会在地图样式中进行查找。如果样式中也没定义的话,那么它将默认为0。
  54. 地图初始化时的倾角,按偏离屏幕水平面的度数计量(0-60)。如果构造函数的参数中没有设置pitch,cmmap GL JS会在地图样式中进行查找。如果样式中也没定义的话,那么它将默认为0。
  55. HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "lnglatboundslike" LngLatBoundsLike
  56. 地图初始化时的限制范围。如果设置了bounds将会覆盖掉center和zoom在构造函数中的参数设置。
  57. HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "map#fitbounds" fitBounds仅用于初始化地图时自适应设置的bounds范围时的情况。
  58. 如果启用了terrain,且属性设置为true,则将优先渲染地图,这可能会导致图层重新排序,从而最大化性能(将首先绘制覆盖在地形上的图层,包括填充、线条、背景、山体阴影和栅格)。否则,如果设置为false,则将始终根据图层顺序优先级绘制地图。
  59. 如果为true,地图缩小时将渲染多个全局地图的副本。
  60. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String" String
  61. 定义一个用于在本地替代通用‘中日韩越统一表意文字’、’平假名’、‘片假名’和‘朝鲜文音节’字形的CSS字体系列。在上述字体在地图样式中的设置,除字体粗细(light/regular/medium/bold)外,都将被忽略。当设置为false,上述字体则使用地图样式中的设置。 该参数的目的是为了避免超带宽的字形请求。(查阅 HYPERLINK "https://www.mapbox.com/mapbox-gl-js/example/local-ideographs" Use locally generated ideographs)
  62. 定义一个CSS字体系列,以覆盖本地所有字形。除了字体粗细关键字(浅/常规/中/粗体)外,地图字体样式中的字体设置将被忽略。如果设置该属性,则此选项将覆盖localIdeographFontFamily中的设置。
  63. 地图发送外部URL请求前执行的回调函数。回调函数中可修改URL、设置请求头或设置跨源请求的相关身份凭证。回调返回的对象参数包含url属性和可选的headers以及credentials属性。
  64. 如果为true,那么将为GeoJSON和Vector Tile web workers发出的请求搜集资源耗时API信息(通常无法从 Javascript 主线程中访问此信息)。该信息将在resourceTiming属性中返回(对应于data事件)。
  65. 控制标注冲突时,淡入淡出的动画过渡时间, 单位为毫秒。该设置将应用于所有symbol图层。对于运行时的样式变化和栅格切片的淡入淡出,此设置不生效。
  66. accessToken
  67. 设置之后,地图将用此token替换掉在cmmapgl.accessToken中设置的值。
  68. 获取当前地图缩放级别。
  69. 获取地图样式中指定ID的图层。
  70. 获取地图中心点经纬度坐标值。
  71. getContainer( )
  72. 获取地图对象的容器
  73. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/api/geography/" \l "lnglatbounds" LngLatBounds
  74. 获取当前地图视图范围,及地理边界。
  75. 添加控件到地图中。control参见3.3地图控件,position位置参数如下:'top-left','top-right','bottom-left','bottom-right','top-right'
  76. 添加图片到地图中
  77. 添加图层到地图中
  78. 添加数据源到地图中
  79. 判断地图视口中所有数据源的瓦片是否加载完成
  80. HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "cameraoptions" CameraOptions / void
  81. 如果地图可以适应到给定的边界,返回 CameraOptions以及center、zoom和bearing。否则方法会出现警告个返回 undefined。
  82. 使用动态转换,将中心点、缩放级别、方位角和倾斜度组合的原有数值改为新数值。地图将保留options没有指定的当前值。
  83. 获取最佳地图视野,在指定的地理边界内平移和缩放地图,以包含其可见区域。当地图方位角不为0的时候,该函数会将方位角重置为0。
  84. 一旦地图旋转到指定方位角,就平移、旋转与缩放地图到由点p0与p1确定的限位框。在不旋转下缩放,只需传入当前地图的方位角。
  85. 对地图中心、缩放级别、方位角和倾斜度做任意组合改变,使其沿着一条曲线动态地变化并引发飞行效果。该动态转换能够无缝引入缩放和平移,使用户即使在穿越了很长的距离后也能保持方位角不变。
  86. 获取地图当前的方位角(旋转度)。
  87. 获取地图的元素。
  88. getCanvasContainer( )
  89. 获取包含地图标签的HTML元素。
  90. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array" Array
  91. 获取应用于指定样式图层的筛选器。
  92. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/api/properties/" \l "freecameraoptions" FreeCameraOptions
  93. 获取指定样式图层中布局属性的值。
  94. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/api/geography/" \l "lnglatbounds" LngLatBounds |/null
  95. 获取地图限制的最大地理边界,如果没有设置,则返回null。
  96. 用动画将地图平移到指定的位置。
  97. 按指定偏移值平移地图。
  98. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/api/properties/" \l "paddingoptions" PaddingOptions
  99. 获取当前地图视口内边距
  100. 获取指定样式图层中paint属性的值。
  101. 获取地图倾斜度
  102. 获取地图样式中指定ID的数据源。
  103. 获取地图的cmmap样式对象,它能被用于重建地图样式。
  104. 判断控件是否在地图上
  105. 判断地图是否由于摄像机动画或用户手势而平移、缩放、旋转或俯仰。
  106. 判断地图是否由于摄像机动画或用户手势而旋转。
  107. 判断地图样式是否完全加载。
  108. 判断地图是否因摄像机动画或用户手势而缩放。
  109. 不用动态转换的情况下改变中心点、缩放级别、方位角和倾斜度的任意组合。地图将保留options没有指定的当前值。
  110. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array" Array HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String" string>
  111. 获取当前地图中能够获取的所有sprites/图像的名称
  112. 判断地图是否载入完毕
  113. 使用Map#addImage从外部URL载入图像。外部域必须支持 HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS" CORS。
  114. 将图层移动到另一个z轴位置。
  115. 移除指定图层的监听器。
  116. 为图层事件添加监听器。
  117. 为图层事件添加一个只会触发一次的监听器。
  118. point
  119. 将经纬度坐标转换为平面地图容器坐标。
  120. unproject(point)
  121. 将地图容器坐标转换为地图经纬度坐标。
  122. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array" Array HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" Object>
  123. 清理并释放和地图相关的所有内部数据源。
  124. 从地图移除控件
  125. 移除图层
  126. 获得并设置一个布尔值,用于指示地图是否将继续再渲染。该信息有助于分析效果。
  127. 以动态转换的方式将地图旋转到0度方位角(正北方)。
  128. 以动态转换的方式将地图旋转到0度方位角(正北方)和0度倾斜角。
  129. 根据其container元素的尺寸调整地图的大小。
  130. 以动态转换的方式将地图旋转到指定方位角。方位角是指南针方向的指向,例如地图方位角为 90°对应正东指向
  131. 使用滚轮或触控板实现地图放大和缩小。
  132. 设置地图的方位角(旋转度)
  133. 设置图层筛选器。
  134. 设置图层的缩放范围。
  135. 设置图层中布局属性的值。
  136. 设置或清除地图的地理边界。
  137. 设置或清除地图的最大倾斜度。
  138. 设置或清除地图的最小倾斜度。
  139. 设置或清除地图的最大缩放等级。如果地图现在的缩放等级高于新的最大值,则地图将缩放到新的最大值。
  140. 设置或清除地图的最小缩放等级。如果地图现在的缩放等级低于新的最小值,地图将缩放到新的最小值。
  141. 设置指定样式图层中 paint 属性的值。
  142. 设置地图倾斜度
  143. 设置更新地图样式。
  144. 设置地图缩放级别。
  145. 获取并设置一个布尔值,指示地图是否会渲染数据源中所有符号周围的框,以及哪些符号已经被渲染,哪些因为冲突而被隐藏。这些信息有助于查错。
  146. 获取并设置一个布尔值,该值指示地图是否将内边距偏移量可视化。
  147. 获取并设置一个布尔值,该值指示地图是否将在显示的地形顶部渲染线框。对于调试很有用。
  148. 获取并设置一个布尔值,用以表示地图是否会渲染切片边界。这些切片边界有助于查错。
  149. 允许使用触摸手势来倾斜地图
  150. 允许用户使用触摸手势缩放或旋转地图
  151. 触发单个帧的渲染,在自定义图层上使用此方法可以在图层更改时重新绘制地图。
  152. cmmap GL JS版本
  153. 以动态转换的方式将地图缩放到指定级别。
  154. 地图放大一级显示
  155. 地图缩小一级显示
  156. 鼠标或触摸手势拖拽地图
  157. 鼠标右键或按住Ctrl键拖动时旋转地图
  158. 键盘快捷键缩放、旋转和平移地图
  159. 地图事件
  160. 支撑图层绑定
  161. 鼠标在地图点击并释放时触发。
  162. var map = new cmmapgl.Map({ // map options });
  163. map.on('click', function(e) {
  164. 点击鼠标右键或点开地图上的快捷菜单时触发。
  165. 地图数据加载或改变时启动。
  166. 任意地图数据(样式、数据源、切片等)开始异步加载或改变时触发。
  167. 鼠标双击地图同一点时触发。
  168. 在渲染完地图最后一帧并进入“空闲(idle)”状态之后触发
  169. 在所有必要数据源下载完毕、且首个可见的地图渲染完毕后立即触发。
  170. 鼠标移入地图容器内时触发。
  171. 鼠标移出地图容器时触发。
  172. 鼠标在地图上单击抬起时触发。
  173. 鼠标在地图上单击按下时触发。
  174. 鼠标从某一图层外部或地图容器外部进入该图层的可见部分时触发
  175. 鼠标离开指定图层的可见部分或离开地图画布时触发。
  176. 鼠标在地图中移动时触发。
  177. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法引发视图动态转换期间重复触发
  178. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapjumpto" Map#jumpTo等方法使地图开始从一个视图转换到另一个视图之前触发。
  179. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapjumpto" Map#jumpTo等方法的作用下,地图完成从一个视图到另一个视图的转换后触发。
  180. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法使地图倾斜角改变时触发。
  181. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法使地图倾斜角改变开始时触发。
  182. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法使地图的倾斜角改变结束之后立即触发。
  183. 地图被移除后触发。
  184. 当地图由于以下操作被绘制到屏幕上时触发
  185. 1.改变地图位置、缩放级别、倾斜度和方位角
  186. 2.改变地图样式
  187. 3.改变 GeoJSON 数据源
  188. 4.载入矢量切片、GeoJSON 文件、glyph 或 sprite
  189. 调整地图大小后触发。
  190. 加载或改变地图数据源时触发,包括加载或改变属于该数据源的一个切片的情况。
  191. 当一个地图数据源开始异步加载或改变时触发。所有sourcedataloading事件后都跟有一个sourcedata或error事件。
  192. 地图样式加载或改变时启动。
  193. 地图样式开始异步加载或改变时触发。
  194. 当事件 HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/Events/touchcancel" touchcancel在地图中触发时启动。
  195. 当事件 HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/Events/touchend" touchend在地图中触发时启动。
  196. 当事件 HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/Events/touchstart" touchstart在地图中触发时启动。
  197. 当事件 HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/Events/touchmove" touchmove在地图中触发时启动。
  198. 当事件 HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/Events/wheel" wheel在地图中触发时启动。
  199. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法引发缩放级别动态转换时重复触发。
  200. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法引发缩放级别转换之前触发。
  201. 在用户交互或 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "mapflyto" Map#flyTo等方法使地图完成缩放级别转换之后触发。
  202. 地图控件
  203. 导航控件 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "navigationcontrol" NavigationControl
  204. new NavigationControl(options: HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" Object?)
  205. var nav = new cmmapgl.NavigationControl();
  206. map.addControl(nav, 'top-left');
  207. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean" Boolean
  208. 比例尺控件 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "scalecontrol" ScaleControl
  209. new ScaleControl(options: HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" Object)
  210. var scale = new cmmapgl.ScaleControl({
  211. map.addControl(scale);
  212. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number" number
  213. HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String" string
  214. 全屏控件 HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "fullscreencontrol" FullscreenControl
  215. A FullscreenControl 全屏控件,包含一个切换地图进入和退出全屏模式的按钮。
  216. new FullscreenControl(options: HYPERLINK "https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object" Object?)
  217. map.addControl(new cmmapgl.FullscreenControl({container:
  218. 为地图的样式添加数据源以及cmmap样式的图层。
  219. container 是  HYPERLINK "https://developer.mozilla.org/en-US/docs/Web/API/Element/requestFullScreen" \l "Compatible_elements" 兼容DOM元素 它应当被全屏显示。默认情况下,地图容器元素会被全屏显示。
  220. 图层数据源
  221. 数据源提供地图显示的数据。数据源分为以下类型的数据源:矢量、栅格、geojson、图像、视频。仅添加数据源并不会立即显示在地图上,因为缺少样式信息如颜色或线宽。通过图层引用数据源将其显示出来。可以对同一数据源采用多种方式渲染,例如在高速路图层中对不同的等级的公路进行分别渲染以示区分。
  222. 包含将地图显示给用户时要显示的属性。
  223. "url": "矢量地图数据服务地址"
  224. 默认值为512,以像素为单位。显示此图层切片的最小视觉尺寸,仅可为栅格图层配置
  225. "url": "栅格地图数据服务地址",
  226. GeoJSON数据
  227. GeoJSON数据源。数据必须通过“data”属性提供,值可以是URL或内联GeoJSON。
  228. clusterMinPoints
  229. 如果启用了聚合,则在生成的聚合上定义自定义属性的对象,用于聚合点中的值。格式为{“property_name”:[operator,map_expression]}。
  230. 例如:{"sum": ["+", ["get", "scalerank"]]}
  231. map_expression: 产生单个点的值
  232. 指向GeoJSON文件的URL或者内联GeoJSON。
  233. 默认值false。是否为geojson要素生成ID,启用后,feature.id属性将根据其在要素数组中的索引自动分配,覆盖先前的所有值
  234. "geojson-marker": {
  235. "data": {
  236. "type": "geojson",
  237. "geometry": {
  238. "type": "Point",
  239. "properties": {
  240. "title": "cmmap DC",
  241. "geojson-lines": {
  242. "marker-symbol": "monument"
  243. "data": "./lines.geojson"
  244. 图层样式
  245. 样式的图层属性列出了该样式中可用的所有图层。样式的图层属性列出了该样式中可用的所有图层。 图层的类型由“type”属性指定,并且必须是背景、多边形填充、折线、点符号、栅格、圆形图层之一。
  246. 除背景类型的图层外,每个图层都必须引用数据源。图层会从数据源中获取数据,可以选择过滤要素,然后定义如何设置这些要素的样式。
  247. 图层属性
  248. 唯一图层名称。
  249. 图层的渲染类型,"background"、"fill"、"line"、"symbol"、"raster"、"circle"之一。
  250. 图层的布局属性。
  251. 图层的最大缩放级别,在0到24之间。在等于或大于最大缩放级别时,图层将被隐藏
  252. 关于样式表的任意属性信息,但不对渲染过程产生影响。这些属性应该添加前缀以避免冲突,例如 'cmmap:'
  253. 图层的最小缩放级别,在0到24之间。在小于最小缩放的缩放级别时,该图层将被隐藏
  254. 图层的默认绘画属性
  255. 用于图层的数据源描述的名称。除了背景图层外,其他图层都需要。
  256. "source": "cmmap-streets",
  257. "paint": {
  258. 背景图层
  259. 背景图层覆盖了整个地图。使用背景图层来配置颜色或图案,使其显示在所有其他地图内容的下方。
  260. 多边形填充图层
  261. 填充样式层可在地图上渲染一个或多个填充(以及可选的描边)多边形。您可以使用填充层来配置多边形或多面要素的视觉外观。
  262. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/types/" \l "resolvedImage" resolvedImage
  263. Paint属性。默认值是map,可选值有"map"和"viewport",需要fill-translate。
  264. 折线图层
  265. 线型图层会在地图上渲染一条或多条描边的折线。您可以使用线层来配置折线或多段线要素的视觉外观。
  266. Paint属性。设置line-dasharray后无效。设置 line-pattern后无效。需要数据源为geojson。
  267. Paint属性。默认值为map,可选值有"map"和"viewport"。需要line-translate。
  268. 点符号图层
  269. 点符号图层在地图上的点或沿线渲染图标和文本。
  270. 需要 icon-image. 需要 icon-rotation-alignment =map. 需要 symbol-placement = line
  271. 图标俯仰角基准点,Layout属性。默认为auto。"map", "viewport", "auto"之一。
  272. 图标旋转基准点,Layout属性。默认为 auto. 可选的值有 map、viewport、auto. 需要 icon-image.
  273. 控制偏移的参考点,Paint属性。默认为 map,可选的值有 map, viewport。需要设置 icon-image、icon-translate。
  274. 注记相对于要素的位置,Layout属性。 默认为 point,可选的值有 point, line。
  275. point:标注在几何要素的点位上。
  276. Layout属性,默认为 true. 需要设置 text-field. 需要设置text-rotation-alignment = map. 需要设置symbol-placement = line。
  277. 当地图倾斜时文本的方向,Layout属性。默认为 auto。可选的值有 map、viewport、auto。需要设置 text-field.
  278. 文本的单个字型的旋转行为,Layout属性。默认为 auto。可选的值有 map、viewport、auto。需要 text-field
  279. 控制偏移的参考点,Paint属性。默认为 map. 可选的值有 map, viewport. 需要设置text-field、 text-translate.
  280. 需要设置text-field、symbol-placement="point"。
  281. Layout属性。可选"horizontal"、"vertical"。需要设置text-field、symbol-placement="point"。
  282. 是否显示此图层,Layout属性。
  283. 栅格图层
  284. 一个栅格样式图层在一个地图上渲染出栅格瓦片。可使用栅格图层来配置栅格瓦片的颜色参数。
  285. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-brightness-max" raster-brightness-max
  286. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-contrast" raster-contrast
  287. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-fade-duration" raster-fade-duration
  288. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-hue-rotate" raster-hue-rotate
  289. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-opacity" raster-opacity
  290. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-resampling" raster-resampling
  291. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-raster-raster-saturation" raster-saturation
  292. 圆形图层
  293. 一个圆形样式在一个地图上渲染一个或多个填充的圆形。可以使用一个圆形图层来配置矢量切片中点或点集合要素的视觉外观。一个圆形图层渲染半径以屏幕单元度量的圆。
  294. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-blur" circle-blur
  295. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-color" circle-color
  296. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-opacity" circle-opacity
  297. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-pitch-alignment" circle-pitch-alignment
  298. 圆的倾斜校准,Paint属性。默认值是viewport,"map"和" viewport"其中之一。
  299. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-pitch-scale" circle-pitch-scale
  300. 当地图倾斜时,控制圆的缩放行为,Paint属性。默认值是viewport,"map"和" viewport"其中之一。
  301. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-radius" circle-radius
  302. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "layout-circle-circle-sort-key" circle-sort-key
  303. 圆的排序键, HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "layout-property" Layout 属性。
  304. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-stroke-color" circle-stroke-color
  305. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-stroke-opacity" circle-stroke-opacity
  306. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-stroke-width" circle-stroke-width
  307. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-translate" circle-translate
  308. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/types/" \l "array" array of  HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/types/" \l "number" numbers
  309. HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/" \l "paint-circle-circle-translate-anchor" circle-translate-anchor
  310. 圆的控制偏移的参考点,Paint属性。默认值是viewport,"map"和" viewport"其中之一。
  311. Marker
  312. 创建一个Marker组件。
  313. 作为Marker的DOM元素。默认值为浅蓝色,水滴形SVG的Marker。
  314. 用来表示Marker的哪个部位距离坐标点最近,该坐标点可通过  HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "markersetlnglat" Marker #setLngLat 设置。默认值”center”。可选'center' , 'top' , 'bottom' , 'left' , 'right' , 'top-left' , 'top-right' , 'bottom-left' , and 'bottom-right'
  315. PointLike
  316. 通过  HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "pointlike" PointLike 对象表示相对于元素中心偏移的像素数,左和上分别为负方向。
  317. 默认Marker的颜色,默认值'#3FB1CE'(浅蓝色)
  318. 默认Marker的比例尺。默认比例尺为1,对应于高度为41px,宽度为27px。
  319. 表示Marker是否可以在地图上拖动,默认值false。
  320. 默认值为0。用户在单击Marker时可以移动鼠标指针的最大像素数,以将其视为有效点击(与标记拖动相反)。继承Map的clickTolerance属性。
  321. Marker顺时针旋转的角度,默认值为0
  322. 俯仰角对齐。默认值auto。map将Marker与Map平面对齐
  323. 旋转角度对齐。默认值auto,map将Marker旋转角度相对于map对齐,并在map旋转时保持方位。
  324. addTo(map)
  325. var marker = new cmmapgl.Marker()
  326. 将Marker添加到地图上
  327. .addTo(map);
  328. 返回Marker的HTML元素
  329. 获取Marker的经纬度。
  330. var lngLat = marker.getLngLat();
  331. Point
  332. 获取Marker的偏移量。
  333. 返回Marker当前的pitchAlignment属性。
  334. 返回绑定到Marker的Popup实例。
  335. .setPopup(new cmmapgl.Popup().setHTML("Hello World!"))
  336. console.log(marker.getPopup());
  337. 返回Marker的当前旋转角度(以度为单位)。
  338. 返回Marker的当前rotationAlignment属性
  339. 如果可以拖动Marker,则返回true
  340. var marker = new cmmapgl.Marker().addTo(map);
  341. 从地图上删除Marker
  342. marker.remove();
  343. 设置Marker的可拖动属性和功能
  344. new cmmapgl.Marker()
  345. 设置Marker的地理位置
  346. 设置Marker的偏移量
  347. 设置Marker的pitchAlignment属性。
  348. 设置Marker的旋转属性。
  349. 设置Marker的rotationAlignment属性。
  350. marker.togglePopup();
  351. var marker = new cmmapgl.Marker({
  352. 默认值true。如果为 true ,点击地图时信息窗体将关闭
  353. 默认值false。如果为 true ,移动地图时信息窗体将关闭
  354. 表示弹窗位置的字符,通过  HYPERLINK "http://www.mapbox.cn/mapbox-gl-js/api/" \l "popupsetlnglat" Popup#setLngLat 与坐标集关联。 选项有 'center' , 'top' , 'bottom' , 'left' , 'right' , 'top-left' , 'top-right' , 'bottom-left' ,以及 'bottom-right'
  355. (number | PointLike)
  356. let popup = new cmmapgl.Popup()
  357. new cmmapgl.Popup()
  358. 将信息窗体添加到地图。
  359. var popup = new cmmapgl.Popup()
  360. 删除已添加到地图的信息窗体
  361. var popup = new cmmapgl.Popup().addTo(map);
  362. trackPointer()
  363. var popup = new cmmapgl.Popup({ closeOnClick: false, closeButton: false })
  364. .trackPointer()
  365. var popup = new cmmapgl.Popup();
  366. popup.on('open', function(){
  367. var markerHeight = 50, markerRadius = 10, linearOffset = 25;
  368. var popupOffsets = {
  369. 'bottom': [0, -markerHeight],
  370. 'bottom-left': [linearOffset, (markerHeight - markerRadius + linearOffset) * -1],
  371. 'bottom-right': [-linearOffset, (markerHeight - markerRadius + linearOffset) * -1],
  372. var popup = new cmmapgl.Popup({offset: popupOffsets, className: 'my-class'})
  373. 'left': [markerRadius, (markerHeight - markerRadius) * -1],
  374. 'right': [-markerRadius, (markerHeight - markerRadius) * -1]
  375. 地图提供了右键菜单事件,用户可基于该事件实现在地图上显示右键菜单功能。
  376. 通过监听地图的“contextmenu”事件,动态创建或控制html div的显示与关闭,实现在地图上展示右键菜单项,菜单项的单击事件实现具体功能。
  377. div id='rightMenu' class="cmmap-menu">
  378. ul class="cmmap-menu-outer">
  379. .cmmap-menu {
  380. .cmmap-info-outer,
  381. .cmmap-menu-outer {
  382. ul.cmmap-menu-outer li {
  383. cursor: pointer;
  384. ul.cmmap-menu-outer li:hover {
  385. dir {
  386. map.on("contextmenu", function (e) {
  387. let mapid = map.getContainer().id
  388. let mapdom = document.getElementById(mapid)
  389. let mapleft = mapdom.getBoundingClientRect().left;
  390. let maptop = mapdom.getBoundingClientRect().top;
  391. // console.log(e.point)
  392. m.style.top = (e.point.y + maptop-10) + 'px';
  393. if(_hookEvnet===false){
  394. m.style.left = (e.point.x + mapleft) + 'px';
  395. map.on("click", function (e) {
  396. 初始化地图:加载地图底图
  397. 通过 createSector() 生成 GeoJSON 多边形
  398. 将扇形作为新图层添加到地图
  399. const description = document.getElementById('sector-desc').value;
  400. // 添加description到properties
  401. sector.properties = {
  402. description: description,
  403. // 添加到地图
  404. if (map.getLayer('sector-layer')) {
  405. map.removeLayer('sector-layer');
  406. map.removeSource('sector-source');
  407. map.addSource('sector-source', {
  408. map.addLayer({
  409. type: 'geojson',
  410. addLabel(center, description);
  411. currentOverlay = {
  412. description,
  413. map.fitBounds(turf.bbox(sector), {
  414. turf.point(center),
  415. { units: 'kilometers' }
  416. 将水滴形作为新图层添加到地图
  417. const description = document.getElementById('droplet-desc').value;
  418. droplet.properties = {
  419. // 更新地图显示
  420. if (map.getLayer('droplet-layer')) {
  421. map.removeLayer('droplet-layer');
  422. map.removeSource('droplet-source');
  423. map.addSource('droplet-source', {
  424. map.fitBounds(turf.bbox(droplet), {
  425. const points = [];
  426. const tipPoint = [0, -length / 2]; // 尖端点
  427. points.push(tipPoint);
  428. for (let i = steps; i >= 0; i--) {
  429. points.push([x, y]);
  430. const coordinates = points.map(point => {
  431. const x = point[0] * Math.cos(angle) - point[1] * Math.sin(angle);
  432. const y = point[0] * Math.sin(angle) + point[1] * Math.cos(angle);
  433. 通过 createIsoscelesTriangle() 生成 GeoJSON 多边形
  434. 将三角形作为新图层添加到地图
  435. const description = document.getElementById('triangle-desc').value;
  436. if (map.getLayer('triangle-layer')) {
  437. map.removeLayer('triangle-layer');
  438. map.removeSource('triangle-source');
  439. map.addSource('triangle-source', {
  440. addLabel(vertex, description);
  441. map.fitBounds(turf.bbox(triangle), {
  442. const point1 = turf.destination(
  443. turf.point(vertex),
  444. coordinates.push(point1.geometry.coordinates);
  445. const point2 = turf.destination(
  446. coordinates.push(point2.geometry.coordinates);
  447. return turf.polygon([coordinates], {
  448. 将图标作为 Marker 添加到地图。
  449. const description = document.getElementById('icon-desc').value;
  450. if (fileInput.files.length === 0) {
  451. addDefaultMarker([lng, lat], size, rotation, description);
  452. addCustomMarker([lng, lat], imgUrl, size, rotation, description);
  453. function addDefaultMarker(coordinates, size, rotation, description) {
  454. marker.setLngLat(coordinates)
  455. marker.addTo(map);
  456. marker: marker,
  457. properties: {
  458. function addCustomMarker(coordinates, imgUrl, size, rotation, description) {
  459. el.className = 'marker-icon';
  460. el.style.cursor = 'pointer';
  461. el.addEventListener('click', (e) => {
  462. geometry: { type: 'Point' },
  463. properties: { description, type: 'icon' }
  464. el.addEventListener('contextmenu', (e) => {
  465. const marker = new cmmapgl.Marker({
  466. el.title = description;
  467. }).setLngLat(coordinates).addTo(map);
  468. properties: { description, size, rotation, imgUrl }
  469. 生成GeoJSON:
  470. 将多边形作为新图层添加到地图(fill 类型图层)。
  471. 自动调整地图视野以包含多边形(map.fitBounds())。
  472. const description = document.getElementById('polygon-desc').value;
  473. polygon.properties = {
  474. if (map.getLayer('polygon-layer')) {
  475. map.removeLayer('polygon-layer');
  476. map.removeSource('polygon-source');
  477. map.addSource('polygon-source', {
  478. map.fitBounds(turf.bbox(polygon), {
  479. const point = turf.destination(
  480. console.log(`顶点 ${i}:`, point.geometry.coordinates);
  481. if (coordinates.length > 0) {
  482. coordinates.push(point.geometry.coordinates);
  483. 鼠标绘图工具(MouseTool)
  484. 使用鼠标绘图工具需要额外引入MouseTool.js和CMMapDrawControl.js两个JS文件。
  485. MouseTool
  486. MouseTool 接口说明
  487. MouseTool(option)
  488. MouseTool的构造函数,目前仅支持桌面浏览器
  489. map: 地图对象引用,必填项
  490. drawPoint
  491. selectPoint
  492. midPoint
  493. vertexPoint
  494. snapPoint
  495. marker()
  496. 开启鼠标画点标注模式。鼠标在地图上单击绘制点标注。
  497. 开启鼠标画折线模式。鼠标在地图上点击绘制折线,鼠标左键双击或右键单击结束绘制。
  498. 开启鼠标画多边形模式。鼠标在地图上单击开始绘制多边形,鼠标左键双击或右键单击结束当前多边形的绘制。
  499. 开启鼠标画矩形模式。鼠标在地图上拉框即可绘制相应的矩形。
  500. 开启鼠标标注文字模式。鼠标在地图上单击标注文字图形。
  501. 开启鼠标画圆模式。鼠标在地图上拖动绘制相应的圆形。
  502. 开启距离量测模式。鼠标在地图上单击绘制量测节点,并计算显示两两节点之间的距离,鼠标左键双击或右键单击结束当前量测操作。
  503. 开启面积量测模式。鼠标在地图上单击绘制量测区域,鼠标左键双击或右键单击结束当前量测操作,并显示本次量测结果。
  504. 开启圆形面积量测模式。鼠标在地图上单击绘制量测圆形区域,鼠标左键双击或右键单击结束当前量测操作,并显示本次量测结果。
  505. 开启画带洞多边形:鼠标在地图上单击先绘制外轮廓,双击后继续绘制内洞,右键结束。
  506. 开启鼠标显示坐标模式。鼠标点击左键可在地图上显示位置坐标,点击鼠标右键关闭坐标拾取功能。
  507. 开启鼠标拉框放大模式。鼠标可在地图上拉框放大地图。
  508. 开启鼠标拉框缩小模式。鼠标可在地图上拉框缩小地图。
  509. GeoJSON
  510. 返回类型为FeatureCollection的GeoJSON对象
  511. 添加图形要素至编辑数组中,在地图上显示对应的图形,并可以进行选择、修改等编辑操作,同时触发编辑事件。
  512. arr : 参数为类型为Feature的数组,数组元素必须为Feature类型的GeoJSON对象。
  513. features: Array,选择图形的GeoJSON对象数组
  514. points:Array,选中节点坐标的GeoJSON对象数组
  515. features:为图形GeoJSON对象数组
  516. features为图形GeoJSON对象数组
  517. points 为选中节点的GeoJSON对象数组
  518. HYPERLINK "javascript:void(0)" MouseTool 提供了 HYPERLINK "javascript:void(0)" draw 事件,用于监听绘图操作:
  519. mouseTool.on("draw", function (e) {
  520. if (e.type.indexOf('create') 0) {
  521. javascript
  522. var map = new cmmapgl.Map({
  523. // 初始化地图
  524. container: 'container',
  525. style: {
  526. // 初始化 MouseTool
  527. mouseTool = new MouseTool({
  528. "map": map,
  529. drawStyle:{ drawPolygon:{//修改绘制面样式 'fill-color': '#00fc21', 'fill-opacity': 0.5 }, drawingPolygon:{//修改绘制过程中面样式 'fill-color': '#0059ff', 'fill-opacity': 0.5 }
  530. snapToMidPoints: true,
  531. } console.log("回调: ", e, overlays);});// 开始绘图draw('marker');
  532. 通过以上功能,MouseTool 可以满足多种地图绘图需求。
  533. HYPERLINK "javascript:void(0)" CMMapDrawControl 是一个用于在地图上添加绘图控件的工具,支持多种绘图操作。以下是 HYPERLINK "javascript:void(0)" CMMapDrawControl 的主要功能和使用说明:
  534. const drawControl = new CMMapDrawControl({
  535. 初始化 HYPERLINK "javascript:void(0)" CMMapDrawControl
  536. map: map, // 地图实例
  537. 添加控件到地图
  538. map.addControl(drawControl, 'bottom-left'); // 将控件添加到地图的指定位置
  539. HYPERLINK "javascript:void(0)" CMMapDrawControl 支持两种布局方式:
  540. map.on('load', () => {
  541. map.addControl(drawControl, 'bottom-left');});
  542. map: map,
  543. HYPERLINK "javascript:void(0)" CMMapDrawControl 提供了以下主要功能:
  544. 通过以上功能, HYPERLINK "javascript:void(0)" CMMapDrawControl 可以方便地在地图上添加绘图控件,满足多种绘图需求。
  545. 该组件用于在地图上显示业务数据的热力图效果。
  546. map.addSource(数据ID, {
  547. 向地图添加热力图数据:
  548. data: GeojsonData
  549. data为Geojson类型点数据,下面例子为2个点数据,如下:
  550. var GeojsonData =
  551. "geometry":{"type":"Point",
  552. type: 'heatmap',
  553. 'heatmap-weight': 0.9 ,
  554. 'heatmap-intensity': {
  555. 'heatmap-color': [
  556. ['heatmap-density'],
  557. 'heatmap-radius': 10 ,
  558. 'heatmap-opacity': 0.9 ,
  559. 固定值:'heatmap'
  560. 热力图显示的最小缩放级别,当地图zoom小于minzoom时,热力图层隐藏。
  561. 热力图显示的最大缩放级别,当地图zoom大于maxzoom时,热力图层隐藏。
  562. paint.heatmap-weight
  563. 每个单独的点对热力图外观的影响。默认情况下,热力图图层的权重为 1,这意味着所有点的权重相等。将heatmap-weight属性设置为5与在同一位置放置五个点的显示效果相同。
  564. paint.heatmap-intensity
  565. paint.heatmap-color
  566. 定义热力图的颜色渐变效果,从最小值到最大值。显示的颜色取决于每个像素的 HYPERLINK "https://docs.mapbox.com/mapbox-gl-js/style-spec/" \l "expressions-heatmap-density" 热图密度值(范围从0.0到1.0)。
  567. paint.heatmap-radius
  568. paint.heatmap-opacity
  569. 控制热力图层的不透明度。
  570. map.addSource('data3', {
  571. 该组件用于在地图上显示业务数据的散点图效果。
  572. 向地图添加散点图数据:
  573. data: {
  574. 散点图显示的最小缩放级别,当地图zoom小于minzoom时,散点图层隐藏。
  575. 散点图显示的最大缩放级别,当地图zoom大于maxzoom时,散点图层隐藏。
  576. // Continuously repaint the map, resulting
  577. map.triggerRepaint();
  578. // Return `true` to let the map know that the image was updated.
  579. map.on('load', function () {
  580. map.addImage('pulsing-dot', pulsingDot, { pixelRatio: 2 }); //添加扩散效果为图片
  581. map.addSource('dot-point', {
  582. 'data': {
  583. 'type': 'geojson',
  584. 'type': 'Point',
  585. 'geometry': {
  586. 'source': 'dot-point',
  587. 'layout': {
  588. 先创建一个map实例:var map = new cmmapgl.Map()。
  589. 定义流向图的配置项:option = { }
  590. var echartslayer = new EchartsLayer(map);
  591. 固定值:'cmmapMap'
  592. 一、先创建一个map实例:var map = new cmmapgl.Map()。
  593. 二、定义时空轨迹图的配置项:option = { }
  594. 二、定义迁徙图的配置项:option = { }
  595. 二、定义网格热力图的配置项:option = { }
  596. visualMap
  597. visualMap.top
  598. visualMap.left
  599. visualMap.pieces
  600. pieces: [{
  601. agis.wgs84togcj02(lng,lat)
  602. agis.bd09togcj02(lng,lat)
  603. agis.gcj02tobd09(lng,lat)
  604. agis.convertFrom(
  605. 定义柱状图的配置项:option = { }
  606. 定义饼状图的配置项:option = { }
  607. 定义折线图的配置项:option = { }
  608. 定义雷达图的配置项:option = { }
  609. 该组件用于在地图上显示业务数据的蜂窝热力图效果。
  610. opacity:图层显示透明度,默认1
  611. 设置图层是否显示,立即生效。值true/false;
  612. 设置图层蜂窝显示颜色,值分为颜色字符串或数组阶梯分段颜色形式
  613. geojson类型数据。
  614. fillColor:设置图层蜂窝显示颜色,值参考setFillColor方法
  615. hexagonLayer = new agis.HexagonLayer({
  616. map:map,
  617. 该组件用于在地图上显示业务数据的网格热力图效果。
  618. 设置图层网格显示颜色,值分为颜色字符串或数组阶梯分段颜色形式
  619. fillColor:设置图层网格显示颜色,值参考setFillColor方法
  620. gridLayer= new agis.GridLayer({
  621. agis.turf.booleanPointOnLine(pt, line);
  622. var pt = agis.turf.point([0, 0]);var line = agis.turf.lineString([[-1, -1],[1, 1],[1.5, 2.2]]);var isPointOnLine = agis.turf.booleanPointOnLine(pt, line);
  623. agis.turf. booleanLineCollinearExcm (line1, line2);
  624. var line1 =agis.turf.lineString([ [116.39622935384978,39.90861426183396], [116.40082102805991,39.90806289847159], [116.40066010485043,39.90736340083651], [116.40557362556137,39.90577921797494], [116.40936068302835,39.90828508970509]]);var line2 = agis.turf.lineString([ [116.39622935384978,39.90861426183396], [116.40082102805991,39.90806289847159], [116.40066010485043,39.90636340083651], [116.40557362556137,39.90577921797494], [116.40936068302835,39.90828508970509]]);
  625. agis.turf.booleanPointInPolygon(pt, poly)
  626. var pt = agis.turf.point([-77, 44]);var poly = agis.turf.polygon([[ [-81, 41], [-81, 47], [-72, 47], [-72, 41], [-81, 41]]]);agis.turf.booleanPointInPolygon(pt, poly)
  627. agis.turf.booleanCrosses(poly1, poly2);
  628. var poly1 = agis.turf.polygon([[[0,0],[0,5],[5,5],[5,0],[0,0]]]);var poly2 = agis.turf.polygon([[[1,1],[1,6],[6,6],[6,1],[1,1]]]); agis.turf.booleanCrosses(poly1, poly2);
  629. agis.turf.booleanPointOnLine(line,poly);
  630. var line = agis.turf.lineString([[-1, -1],[1, 1],[1.5, 2.2]]);var poly = agis.turf.polygon([[[0,0],[0,5],[5,5],[5,0],[0,0]]]);var isPointOnLine = agis.turf.booleanPointOnLine(line, poly);
  631. agis.turf.booleanContains(poly1, poly2);
  632. var poly1 = agis.turf.polygon([[[0,0],[0,5],[5,5],[5,0],[0,0]]]);var poly2 = agis.turf.polygon([[[1,1],[1,6],[6,6],[6,1],[1,1]]]);agis.turf.booleanContains(poly1, poly2);
  633. agis.turf.booleanEqual(pt1, pt2)
  634. var pt1 = agis.turf.point([0, 0]);var pt2 = agis.turf.point([0, 0]);agis.turf.booleanEqual(pt1, pt2);//= true
  635. agis.turf.pixelCompareExcm(pixel1, pixel12)
  636. var pixel1= [200,100];var pixel2= [200,100];agis.turf. pixelCompareExcm (pixel1, pixel2);//= true
  637. agis.turf.booleanEqual(py1, py2)
  638. var poly1 = agis.turf.polygon([[[0,0],[0,5],[5,5],[5,0],[0,0]]]);var poly2 = agis.turf.polygon([[[1,1],[1,6],[6,6],[6,1],[1,1]]]); agis.turf.booleanEqual(pt1, pt2);
  639. agis.turf.intersect
  640. agis.turf.intersectExcm
  641. agis.turf.intersect(poly1, poly2);
  642. var poly1 = agis.turf.polygon([[ [-122.801742, 45.48565], [-122.801742, 45.60491], [-122.584762, 45.60491], [-122.584762, 45.48565], [-122.801742, 45.48565]]]);var poly2 = agis.turf.polygon([[ [-122.520217, 45.535693], [-122.64038, 45.553967], [-122.720031, 45.526554], [-122.669906, 45.507309], [-122.723464, 45.446643], [-122.532577, 45.408574], [-122.487258, 45.477466], [-122.520217, 45.535693]]]);
  643. var intersection = agis.turf.intersect(agis.turf.featureCollection([poly1, poly2]));
  644. intersection = agis.turf.intersectExcm(poly1,poly2);
  645. agis.turf.union
  646. agis.turf.unionExcm
  647. agis.turf.union(poly1, poly2);
  648. var poly1 = agis.turf.polygon([[ [-122.801742, 45.48565], [-122.801742, 45.60491], [-122.584762, 45.60491], [-122.584762, 45.48565], [-122.801742, 45.48565]]]);var poly2 = agis.turf.polygon([[ [-122.520217, 45.535693], [-122.64038, 45.553967], [-122.720031, 45.526554], [-122.669906, 45.507309], [-122.723464, 45.446643], [-122.532577, 45.408574], [-122.487258, 45.477466], [-122.520217, 45.535693]]]);
  649. 方法一:var union = agis.turf.union(agis.turf.featureCollection([poly1, poly2]));
  650. intersection = agis.turf.unionExcm(poly1,poly2);
  651. agis.turf.difference
  652. agis.turf.difference Excm
  653. agis.turf.difference(poly1, poly2);
  654. 方法一:var difference= agis.turf.difference (agis.turf.featureCollection([poly1, poly2]));
  655. intersection = agis.turf.differenceExcm(poly1,poly2);
  656. agis.turf.xorExcm(poly1, poly2);
  657. var poly1 = agis.turf.polygon([[ [-122.801742, 45.48565], [-122.801742, 45.60491], [-122.584762, 45.60491], [-122.584762, 45.48565], [-122.801742, 45.48565]]]);var poly2 = agis.turf.polygon([[ [-122.520217, 45.535693], [-122.64038, 45.553967], [-122.720031, 45.526554], [-122.669906, 45.507309], [-122.723464, 45.446643], [-122.532577, 45.408574], [-122.487258, 45.477466], [-122.520217, 45.535693]]]);var difference= agis.turf.xorExcm(poly1, poly2);
  658. agis.turf.distance(from, to, options)
  659. var from = agis.turf.point([-75.343, 39.984]);var to = agis.turf.point([-75.534, 39.123]);var options = {units: 'miles'};agis.turf.distance(from, to, options)
  660. agis.turf.spanOfRectangleExcm(bounds)
  661. var arr = [[-73.9876, 40.7661], [-73.9397, 40.8002]];var bounds = cmmapgl.LngLatBounds.convert(arr);agis.turf.spanOfRectangleExcm (bounds);
  662. agis.turf.area(polygon);
  663. var polygon = agis.turf.polygon([[[125, -15], [113, -22], [154, -27], [144, -15], [125, -15]]]);var area = agis.turf.area(polygon);
  664. agis.turf.length(line, options);
  665. var line = agis.turf.lineString([[115, -32], [131, -22], [143, -25], [150, -34]]);var length = agis.turf.length(line, {units: 'miles'});
  666. agis.turf.diagonalCoordinatesExcm (bounds)
  667. var arr = [[-73.9876, 40.7661], [-73.9397, 40.8002]];var bounds = cmmapgl.LngLatBounds.convert(arr);agis.turf.diagonalCoordinatesExcm(bounds);
  668. agis.turf.center()
  669. agis.turf.center(geometry) 返回图形中心点,格式为GeoJSON
  670. agis.turf.centroid()
  671. agis.turf.centroid(geometry) 返回图形质心点,返回格式为GeoJSON
  672. let calculateBuffer = function(points, radius, units = 'kilometers') {
  673. agis.turf.buffer(geometry)
  674. let buffer = agis.turf.buffer(line, radius, {units: units});
  675. let coordinates = points.map(p => [p.lng, p.lat]);
  676. let line = agis.turf.lineString(coordinates);
  677. CMMap.voronoiHelper 为创建泰森多边形的工具类,无需实例化,直接调用。
  678. 创建泰森多边形功能,直接调用 CMMap.voronoiHelper.createVoronoi() 方法。
  679. createVoronoi(point, bbox)
  680. points: 点集合,类型为FeatureCollection;
  681. randomPoint(num, bbox)
  682. 成功执行,返回类型为Point的FeatureCollection