new mars3d.layer.GeoJsonLayer({加载边线为虚线的行政区效果

148 篇文章 2 订阅
132 篇文章 0 订阅

需求:加载geojson数据的时候,实现边框线边线虚线效果。

export function showRegion() {
  removeLayer()

  graphicLayer = new mars3d.layer.GeoJsonLayer({
    name: "合肥市",
    url: "//data.mars3d.cn/file/geojson/areas/340100_full.json",
    symbol: {
      styleOptions: {
        fill: true,
        randomColor: true, // 随机色
        opacity: 0.3,
        outline: true,
        outlineStyle: {
          color: "#FED976",
          width: 3,
          opacity: 1,
              materialType: mars3d.MaterialType.PolylineDash,
      materialOptions: {
        color: Cesium.Color.CYAN,
        dashLength: 8.0
      }
        },
        // 高亮时的样式
        highlight: {
          opacity: 0.9,
          outlineStyle: {
            width: 6,
            color: "#ff0000",
            addHeight: 100
          }
        },
        label: {
          // 面中心点,显示文字的配置
          text: "{name}", // 对应的属性名称
          opacity: 1,
          font_size: 40,
          color: "#ffffff",

          font_family: "楷体",
          outline: true,
          outlineColor: "#000000",
          outlineWidth: 3,

          background: false,
          backgroundColor: "#000000",
          backgroundOpacity: 0.1,

          font_weight: "normal",
          font_style: "normal",

          scaleByDistance: true,
          scaleByDistance_far: 20000000,
          scaleByDistance_farValue: 0.1,
          scaleByDistance_near: 1000,
          scaleByDistance_nearValue: 1,

          distanceDisplayCondition: false,
          distanceDisplayCondition_far: 10000,
          distanceDisplayCondition_near: 0,
          visibleDepth: false
        }
      }
    },
    popup: "{name}",
    // "tooltip": "{name}",
    flyTo: true
  })
  map.addLayer(graphicLayer)

  // 绑定事件
  graphicLayer.on(mars3d.EventType.load, function (event) {
    console.log("数据加载完成", event)
  })
  graphicLayer.on(mars3d.EventType.click, function (event) {
    console.log("单击了图层", event)
  })
}

 

此效果唯一的问题在于,json数据的格式,在边框部分会存在重合的效果。所以需要把json数据格式改为TopoJSON数据。

示例链接地址:

1.http://mars3d.cn/editor-vue.html?id=layer-graphic/geojson/basis

关键代码:

  outline: true,
        outlineStyle: {
          color: "#FED976",
          width: 3,
          opacity: 1,
              materialType: mars3d.MaterialType.PolylineDash,
      materialOptions: {
        color: Cesium.Color.CYAN,
        dashLength: 8.0
      }

关键api支撑:

Mars3D三维可视化平台 | 火星科技

json数据地址:

//data.mars3d.cn/file/geojson/areas/340100_full.json

修改为为TopoJSON数据后,可以传一下new mars3d.layer.GeoJsonLayer({的data。与url是二选一的。

data:{//说明:data里面传的是json文件的数据格式,就是普通文件打开,花括号里面的数据。}

  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Mars3D是一款基于WebGL的开源地图框架,可以加载各种地图数据,并展示在地图上。如果要加载Mabpx的PBF矢量切片服务,可以按照以下步骤操作: 1. 首先需要在Mabpx平台上创建一个PBF矢量切片服务,然后获取服务地址和图层名称。 2. 在Mars3D创建一个新的GeoJsonLayer图层。 3. 设置GeoJsonLayer的url属性为PBF矢量切片服务地址,设置layerName属性为图层名称。 4. 将GeoJsonLayer添加到Mars3D地图对象,即可在地图上展示PBF矢量切片数据。 以下是示例代码: ```javascript // 创建一个Mars3D地图对象 var map = new mars3d.Map('mars3dContainer', { // 设置底图为谷歌影像图 "baseLayers": [{ "layer": "gaoDe", "title": "高德影像", "icon": "image/baseLayer_gaode.png", "visible": true }], // 设置地图心点和缩放级别 "center": { "x": 120.129186, "y": 30.259494, "z": 1000000 } }); // 创建一个GeoJsonLayer图层 var layer = new mars3d.layer.GeoJsonLayer({ "name": "PBF矢量切片", "url": "http://localhost:8080/mabpx/tile/{z}/{x}/{y}.pbf", "layerName": "test" }); // 将图层添加到Mars3D地图对象 map.addLayer(layer); ``` 在以上代码,我们创建了一个GeoJsonLayer图层,设置了它的url属性为PBF矢量切片服务地址,设置了layerName属性为图层名称。然后将该图层添加到Mars3D地图对象,即可在地图上展示PBF矢量切片数据。需要注意的是,PBF矢量切片服务地址的{z}、{x}、{y}是动态参数,表示切片的级别、行号和列号。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值