Skip to content

YY. Map ​

地图对象,为 WebGIS 开发最重要的对象,也是方法,配置参数等最为多的对象

creation ​

  • constructor(dom||String, [options])

    • options

      • {Array} center:地图中心点坐标。
      • {Number} zoom:地图的初始缩放级别。
      • {Number} minZoom:地图的最小缩放级别
      • {Number} maxZoom:地图的最大缩放级别。
      • {Array[Array]} maxBounds:地图的最大显示范围。
      • {Number} pitch:地图的倾斜角度。
      • {Boolean} centerCross:地图是否标注中心点,true 后会在地图中心点显示一个小红点。
      • {Boolean} zoomAnimation:在地图缩放时是否已动画的方式展示。
      • {Boolean} zoomable :地图是否可以缩放。
      • {Number} maxPitch:地图最大的倾斜角。
      • {Number} bearing:地图的旋转角度。
      • {Boolean} zoomControl:是否默认添加地图 zoom 控制控件。
      • {Boolean} compass是否开启指南针,默认开启。
      • {Boolean} overviewControl:地图是否默认添加鹰眼控件。
      • {Boolean} fullscreen:地图是否默认开启全屏控件。
      • {Boolean} scaleControl:地图是否默认添加比例尺控件。
      • {Boolean} dragPitch:地图是否允许倾斜角调整。
      • {Boolean} touchPitch:地图是否允许倾斜角调整。
      • {Boolean} dragRotate:地图是否允许旋转。
      • {Boolean} touchRotate:地图是否允许旋转。
      • {Boolean} draggable:地图是否允许拖拽。
      • {Boolean} seamlessZoom :无极缩放,允许小数层级的存在
      • {Number} devicePixelRatio :地图的设备缩放比例,一般用于大屏中,需要对地图进行缩放的场景

example ​

js
const map = new YY.Map(this.$refs.map, {
    centerCross: true,
    // bearing:-90,
    center: [120.34, 31.309622415877158],
    // pitch:40,
    // overviewControl:true,

    zoom: 8,
    // minZoom:4
});

基本地图

events ​

touchactstart ​

touchactstart

touchacting ​

touchacting。

touchactend ​

touchactend

pitch ​

地图倾斜角发生变化时触发。

pitchend ​

地图倾斜角变化结束触发。

mousedown ​

鼠标 mousedown。

mouseup ​

鼠标 mouseup。

mouseover ​

鼠标 mouseover。

mouseout ​

鼠标 mouseout

mouseenter ​

鼠标 mouseenter。

mouseleave ​

鼠标 mouseleave。

mousemove ​

鼠标 mousemove。

click ​

鼠标 click。

dblclick ​

鼠标 dblclick。

contextmenu ​

地图右击,上下文菜单时触发。

touchstart ​

触摸 touchstart。

touchmove ​

触摸 touchmove。

touchend ​

触摸 touchend。

fullscreenstart ​

全屏开始时。

fullscreenend ​

全屏结束。

spatialreferencechange ​

空间坐标系发生改变时。

baselayerchangestart ​

瓦片图层放生改变时 start。

baselayerchangeend ​

瓦片图层放生改变时 end。

setbaselayer ​

设置瓦片图层时。

addlayer ​

添加图层时触发。

removelayer ​

移除图层时触发。

resize ​

地图大小改变时触发。

movestart ​

地图移动开始时触发。

moving ​

地图移动 ing 触发。

moveend ​

地图移动结束后触发。

dragrotatestart ​

地图旋转时触发。

dragrotating ​

地图旋转 ing 触发。

dragrotateend ​

地图旋转结束时触发。

zoomend ​

地图缩放结束后触发。

zoomstart ​

地图缩放开始时触发。

zooming ​

地图缩放过程中触发。

viewchange ​

地图视图发生改变时发生

js
map.on("click", function(e) {
    console.log(e);
});

map.on("click mousemove", function(e) {
    console.log(e);
});

//批量添加
var events = ["click", "moveend", "resize"];
events.forEach((element) => {
    map.on(element, function(e) {
        console.log(e);
    });
});

// 常用的有:pitch,pitchend,mouseenter,mouseleave,mousemove,click,resize,movestart,moving,moveend,dragrotatestart,dragrotating,dragrotateend

methods ​

getId() ​

  • 获取地图的 id

  • 返回值: String/Number

addControl(control) ​

  • 添加控件到地图上,例如比例尺,层级控件,鹰眼控件等
  • 返回值: this
js
const map = new YY.Map(this.$refs.map, {
    centerCross: true,
    // bearing:-90,
    center: [120.34, 31.309622415877158],
    // pitch:40,
    // overviewControl:true,

    zoom: 8,
    // minZoom:4
});

map.addControl(new YY.ZoomControl());

removeControl(control) ​

  • 移除控从地图上,例如比例尺,层级控件,鹰眼控件等
  • 返回值: this

animateTo(view, options, callback) ​

动画飞行

  • 地图动画播放,移动中心点,倾斜角,旋转角等
  • 返回值: this
js
map.animateTo({
    center: [120, 40.636167734187026],
    zoom: 8,
    pitch: 50,
    bearing: -90,
}, {
    duration: 5000,
});

isAnimating() ​

  • 地图是否在动画过程中
  • 返回值: Boolean

getBearing() ​

  • 获取地图的旋转角值
  • 返回值: Float

setBearing(bearing) ​

旋转角设置

  • 设置地图的旋转角值

  • 参数

    • {Float} bearing:数值
  • 返回值: this

getPitch() ​

  • 获取地图的倾斜角
  • 返回值: Float

setPitch(pitch) ​

倾斜角设置

  • 设置地图的倾斜角

  • 参数

    • {Float} pitch:数值
  • 返回值: this

getContainer() ​

  • 获取地图的容器
  • 返回值: dom/HTML

getCenter() ​

setCenter(center) ​

设置地图的中心点

  • 设置地图的中心点
  • 参数
  • 返回值: this

lookAt(overlay) ​

  • 定位到某个覆盖物
  • 参数
  • 返回值: this
js
var ellipse = new YY.Ellipse([120, 31], 20000, 10000);
map.lookAt(ellipse);

getSize() ​

  • 获取地图的大小, 获取地图容器 Container 的大小
  • 返回值: YY. Size

getContainerBounds() ​

  • 获取地图容器的地图的可见范围,地图的有效范围
  • 返回值: YY. PixelEnvelope

getBounds() ​

getZoom() ​

  • 获取地图的当前的层级
  • 返回值: Number

setZoom(zoom, [options]) ​

设置地图层级

  • 设置地图的当前的层级

    • 参数
    • {Number} zoom
    • {Object} options
  • 返回值: this

js
map.setZoom(10, {
    animation: fasle
});

zoomIn() ​

  • 地图放大
  • 返回值: this

zoomOut() ​

  • 地图缩小
  • 返回值: this

setCenterAndZoom(center, zoom) ​

同时设置中心点和层级

  • 设置地图的当前的层级和中心点

  • 返回值: this

getMaxZoom() ​

  • 获取地图最大的层级,即地图可以放大的最大等级
  • 返回值: Number

setMaxZoom(maxZoom) ​

  • 设置地图最大的层级,即地图可以放大的最大等级

  • 参数

    • {Number} maxZoom
  • 返回值: this

getMinZoom() ​

  • 获取地图最最小的层级,即地图可以缩小的最小等级
  • 返回值: Number

setMinZoom(minZoom) ​

  • 设置地图最最小的层级,即地图可以缩小的最小等级

  • 参数

    • {Number} minZoom
  • 返回值: this

isZooming() ​

  • 地图是否在缩放的过程中
  • 返回值: Boolean

setView(view) ​

demo

  • 设置地图视图

  • 参数

    • {Object} view
  • 返回值: this

js
map.setView({
    center: [120, 44],
    zoom: 5,
    pitch: 59,
    bearing: -89,
});

getView() ​

  • 获取地图当前视图
  • 返回值: Object
js
let view = map.getView();
console.table(view);

getMaxBounds() ​

setMaxBounds(bounds) ​

  • 设置地图的边界范围

  • 参数

  • 返回值: this

toPixel(lnglat) ​

demo

  • 经纬度坐标转像素坐标,地图不同状态下,相同的经纬度对应地图的像素坐标是不一样的
  • 参数
  • 返回值: YY. Pixel

toLngLat(pixel) ​

demo

  • 像素坐标转经纬度坐标,地图不同状态下,相同的像素坐标对应地图的经纬度坐标是不一样的
  • 参数
  • 返回值: YY. LngLat

saveImage([options]) ​

demo

  • 将地图导出为图片
  • 参数
    • {Object} options
  • 返回值: String/File
js
map.saveImage(); //返回值为base64

map.saveImage({
    save: true,
    mimeType: "image/png"
}); //返回值为浏览器会自动下载一个image 文件

locate(lnglat, [dx], [dy]) ​

  • 将地图对经纬度坐标进行米制计算
  • 参数
    • {YY. LngLat} lnglat
    • {Number} dx 横向增减的米
    • {Number} dy 纵向增减的米
  • 返回值: YY. LngLat

locateByPoint(lnglat, [dx], [dy]) ​

  • 将地图对经纬度坐标进行像素制计算
  • 参数
    • {YY. LngLat} lnglat
    • {Number} dx 横向增减的像素
    • {Number} dy 纵向增减的像素
  • 返回值: YY. LngLat

distance(latlng1, latlng2) ​

computeDistance(overlay) ​

  • 计算覆盖物的长度,一般用于道路等计算
  • 参数
  • 返回值: Float
js
var polyline = new YY.Polyline([
    [120, 31],
    [123, 33],
    [111, 22],
]);
console.log(map.computeDistance(polyline));

computeArea(overlay) ​

js
var polygon = new YY.Polyline([
    [
        [120, 31],
        [123, 33],
        [111, 22],
    ],
]);
console.log(map.computeArea(polygon));

addBaseLayer(baseLayer) ​

  • 添加瓦片图层

  • 参数

  • 返回值: this

js
var tdtTileLayer = YY.LayerLookup.lookup("tdt"); //创建默认的天地图瓦片图层
map.addBaseLayer(tdtTileLayer);

getBaseLayerById(id) ​

  • 根据 id 查找瓦片图层
  • 参数
    • {Number||String} id
  • 返回值: YY. TileLayer

getCurrentBaseLayer() ​

getBaseLayers() ​

removeBaseLayer(baseLayer) ​

  • 从地图上移除瓦片图层

  • 参数

  • 返回值: this

switchBaseLayer(baseLayer) ​

getLayers() ​

getLayerById(id) ​

  • 根据 id 获取矢量图层
  • 参数
    • {Number||String} id
  • 返回值: YY. VectorLayer

addLayer(layer) ​

addLayers(layers) ​

removeLayer(layer) ​

hasLayer(layer) ​

  • 判断地图上是否包含该矢量图层
  • 参数
  • 返回值: Boolean

config(conf) ​

  • 动态设置的配置

  • 参数

    • {Object} conf
  • 返回值: this

js
//禁用地图倾斜
map.config({
    dragPitch: false
});

fullScreen() ​

demo

  • 全屏显示
  • 返回值: this

cancelFullScreen() ​

  • 退出全屏
  • 返回值: this

setMenu(options) ​

  • 设置右键菜单,上下文菜单

  • 参数

    • {Object} options
  • 返回值: this

js
var options = {
    custom: true,
    items: '<ul class="custom_menu">' +
        '<li onclick="clickItem(this);">Locate</li>' +
        '<li onclick="clickItem(this);">Mark</li>' +
        '<li onclick="clickItem(this);">Identify</li>' +
        '<li onclick="clickItem(this);">About</li>' +
        "</ul>",
};
map.setMenu(options);

removeMenu() ​

  • 移除右键菜单,上下文菜单
  • 返回值: this

openMenu(lnglat) ​

  • 打开右键菜单,上下文菜单

  • 参数

  • 返回值: this

closeMenu() ​

  • 关闭右键菜单,上下文菜单
  • 返回值: this

hit(lnglat, callback, layers) ​

  • 命中图形覆盖物,通过经纬度去看是否有覆盖物被选中

  • 参数

  • 返回值: this

js
let lnglat = new YY.LngLat(130, 31);
map.hit(
    lnglat,
    function(geos) {
        // console.log(geos);
        if (geos && geos.length > 0) {
            geos.forEach((geo) => {
                geo.updateStyle(YY.Style.formatFill({
                    polygonFill: "red"
                }));
            });
        }
    },
    map.getLayers()
);

on(events, handler, [context]) ​

  • 事件监听
  • 参数
    • {String} events :click, moving resize ......
    • {function} handler : 处理函数
    • {context} context : 上下文, 默认 this
  • 返回值: this

once(events, handler, [context]) ​

  • 事件监听只有一次
  • 参数
    • {String} events :click, moving resize ......
    • {function} handler : 处理函数
    • {context} context : 上下文, 默认 this
  • 返回值: this

off(events, handler, [context]) ​

  • 移除事件监听
  • 参数
    • {String} events :click, moving resize ......
    • {function} handler : 处理函数
    • {context} context : 上下文, 默认 this
  • 返回值: this

fire(eventType, param) ​

  • 派发事件
  • 参数
    • {String} eventType :click, moving resize ......
    • {Object} param : 传递的参数
  • 返回值: this

This document is generated by vitepress and Edit by deyihu