首页 文章

如何实现mapbox-gl的tile源码

提问于
浏览
1

我正在从react-leaflet切换到mapbox-gl,并对我用于空间数据的专有磁贴服务有疑问 . api几乎没有文档 . 他们提供4种不同的方式来请求瓷砖 .

绘制 Map 图块 - 根据图像大小(以像素为单位)创建具有透明背景的PNG Map 图块,以十进制度数设置一个拉特伦边界框,选择图层和默认样式 . 有关样式名称的完整列表,请参阅各个功能 . 绘制静态 Map 图块 - 根据图像大小(以像素为单位),以十进制度表示的拉特伦坐标,缩放级别,选定图层和默认样式创建具有透明背景的PNG Map 图块 . 有关样式名称的完整列表,请参阅各个功能 . BING NON CACHE - 根据Bing Maps API Quadkey,选定的图层和默认样式创建具有透明背景的PNG Map 图块 . 有关样式名称的完整列表,请参阅各个功能 . GOOGLE NON CACHE - 根据Google Maps API X,Y和缩放值,所选图层和默认样式创建具有透明背景的PNG Map 图块 . 有关样式名称的完整列表,请参阅各个功能 .

对于传单我使用谷歌 endpoints 与插件“react-leaflet-google”

_coreLogic = () => {
    const {authKey} = this.props
    const baseUrl = 'http://sws.corelogic.com/api/v3.0.0/tile/gmap?'
    const zoom = this._map.getZoom()
    const type = 'layers=fass%3Aparcel&styles=parcelpolygonorange'
    this.setState({coreLogicUrl: `${baseUrl}x={x}&y={y}&zoom=${zoom}&${type}&authKey=${authKey}`})
  }

  <LayersControl.Overlay checked name='CoreLogic Parcel'>
     <LayerGroup>
        <TileLayer url={coreLogicUrl} />
     </LayerGroup>
  </LayersControl.Overlay>

效果很好 . 切换到mapbox-gl有点令人困惑 . 我不确定它是光栅,矢量还是图像层 . 我盲目地尝试了不同的方式,没有运气 . api有一个使用apis的演示 .

这是什么的

绘制 Map 图块

好像 .

First option

http://sws.corelogic.com/api/v3.0.0/map?width=500&height=500&layers=fass%3Aparcel&styles=parcelpolygonorange&bbox=-74.025879%2C40.705628%2C-74.014893%2C40.713956&authKey=0x7Y0z3K8dnC79y0HwAAtXNUNHHit

第二种选择

绘制静态 Map 图块

好像

second option

http://sws.corelogic.com/api/v3.0.0/map?width=600&height=600&layers=fass%3Aparcel&styles=parcelpolygonorange&lat=40.709792&lon=-74.020386&zoom=15&authKey=0x7Y0z3K8dn

1 回答

  • 1

    你可能想要一个raster tile source . Mapbox仅支持由x / y / z平铺坐标(不是lat-longs或Bing quadkeys)给出的栅格切片,因此排除前三个选项,仅保留Google NON CACHE PNG API endpoints .

    您的代码将类似于:

    map.addSource('tiles', {
      type: 'raster',
      tiles: ['BASEURL/x={x}&y={y}&zoom=${z}&TYPEANDAUTHKEYANDSTUFF']
    });
    

    你正在使用的API似乎在网上找不到,所以我不能比这更具体 .

相关问题