# leaflet-renderjs **Repository Path**: stylekong/leaflet-renderjs ## Basic Information - **Project Name**: leaflet-renderjs - **Description**: uniapp的renderjs中使用leaflet - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-17 - **Last Updated**: 2025-11-20 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 为兼容app,使用renderjs实现地图组件 ## 思路 * 通过prop传递参数,通过change:prop派发方法 * 在renderjs中监听change:prop,执行对应方法 * 每次调用渲染层方法时,都生成一个id,给地图绑定事件,地图方法回调,查找图层 * 关于图层,在逻辑层中派发创建方法时带入一个id,在渲染层中创建图层时按[id]:layer || layer[]的方式将图层保存,可能图层中包含多个子图层,所以有子图层的用数组保存,注意使用方式 * 关于事件绑定,使用onEvent方法,接收一个图层id,将事件回调按[id]:callback的方式保存, ## 使用方法 * @ready:地图初始化完成,返回地图vue组件实例,地图实例id * options: 地图配置参数,同leaflet配置参数,crs需传对象;crs格式为{ srsCode: "EPSG:4326",defs: "+proj=longlat +datum=WGS84 +no_defs",options: {origin: [-180.0, 90.0],resolutions: TDT_RESOLUTIONS,},} ```vue ``` * emitMethod: 派发方法,对地图操作都会调用这个方法,属于基础方法,一般清空下不用 ```js this.map.emitMethod(method,options) ``` * init: 初始化地图,返回地图实例id,内部调用,无需使用 * tile: 添加瓦片图层,返回图层实例id,接受三个参数, * url:瓦片地址 * method:请求方法,规则:L.tile => tile, L.supermap.ImageMapLayer => supermap.imageMapLayer,以此类推 * options:瓦片配置参数,对应方法的参数 ```js this.map.tile(url, method, options) ``` * control: 添加控件,返回控件实例id, 接受三个参数, * options:控件配置参数 ```js this.map.control(options) ``` * marker: 添加标记,返回标记实例id, 接受二个参数, * latlng: 标记位置 * options:标记配置参数 ```js this.map.marker(latlng,options) ``` * geoJSON: 添加geoJSON图层,返回图层实例id, 接受二个参数, * geoJSON: geoJSON数据 * options: geoJSON配置参数,可选 ```js this.map.geoJSON(geoJSON,options) ``` * featureGroup: 添加featureGroup图层,返回图层实例id, 接受一个参数 * layers: 图层实例id数组,可选 ```js this.map.featureGroup(layers) ``` * layerGroup: 添加layerGroup图层,返回图层实例id, 接受一个参数 * layers: 图层实例id数组,可选 ```js this.map.layerGroup(layers) ``` * layerControl: 添加layerControl图层,返回图层实例id, 接受三个参数 * baselayers: 基础图层id,可选 * overlays: 覆盖图层id,可选 * options: control.layer配置参数,可选 ```js this.map.layerControl(baselayers, overlays, options) ``` * getLayers: 获取子图层, 接受二个参数 * layer: 图层实例id * callback: 回调函数,接受子图层实例id数组 ```js this.map.getLayers(layer, callback) ``` * layerMethod: 调用图层方法 * layer: 图层实例id * method: 图层方法 * callback: 回调函数,接受子图层实例id数组,可选,不传的情况下args自动添加callback对应位置的参数 * ...args: 图层方法参数 ```js this.map.layerMethod(layer, method, callback, ...args) ``` * lMethod: 调用leaflet方法,例如icon,lnglat等 * method: leaflet方法 * ...args: leaflet方法参数 ```js this.map.lMethod(method, ...args) ``` * addControl: 添加控件 * map: 地图实例id * control: 控件实例id ```js this.map.addControl(map,control) ``` * addBaseLayer: 添加基础图层, 接受三个参数 * control: 控件实例id * layer: 图层实例id * name: 图层名称 ```js this.map.addBaseLayer(control,layer, name) ``` * addOverlay: 添加覆盖图层, 接受三个参数 * control: 控件实例id * layer: 图层实例id * name: 图层名称 ```js this.map.addOverlay(control,layer, name) ``` * addLayer: 添加图层, 将layer图层添加到layerGroup图层中 * layerGroup: 图层组实例id * layer: 图层实例id ```js this.map.addLayer(control,layer) ``` * removeLayer: 删除图层, 接受一个参数;**注意: 删除图层组时,不会彻底删除内存中的子图层** ```js this.map.removeLayer(layer) ``` * clearLayers: 清空图层, 接受一个参数; **注意: 会彻底删除内存中的子图层** ```js this.map.clearLayers(layer) ``` * onEvent: 绑定事件, 接受三个参数 * layer: 图层实例id * type: 事件类型名称 * callback: 回调函数 ```js this.map.onEvent(layer, event, callback) ``` * offEvent: 解绑事件, 接受三个参数 * layer: 图层实例id * type: 事件类型名称 * callback: 回调函数 ```js this.map.offEvent(layer, event, callback) ```