基于两篇react+arcgis的文章介绍,相信大家也能体会两者的开发区别了。在“初探篇”中作者也讲述了自己的选择,故废话不多说,本篇带大家体验在@arcgis/webpack-plugin环境下,使用react+redux+react-router+less+es6+webpack 开发(故在看本篇文章之前,请先了解相关知识)。

效果图如下:

文件目录

  • 主要开发文件目录

assets 存放静态资源
components 组件
configure 全局配置、路由、redux
layout 页面
redux 合并reducer
styles 样式文件
utils 公共方法
views 页面入口

代码开发

创建项目路由
src/configure/router/index.js

import React from 'react';
import {HashRouter, Route, Switch} from 'react-router-dom';
import Header from "Src/layout/Header";
import Footer from "Src/layout/Footer";
import MapModule from 'Views/Map/';
import NoFound from 'Views/NoFound/NpFound';
import {PrivateRoute} from "Shared/AuthorizeFilter"; export default class RouteMap extends React.Component {
render() {
return (
<HashRouter basename="/">
<div className="container_outer" id={'container_outer'}>
<Header/>
<div className={'container_inner'} id={'container_inner'}>
<div className={'container_inner_right'} id={'container_inner_right'}>
<div className={'container_inner_main'} id={'container_inner_main'}>
{/* 页面 */}
<Switch>
<PrivateRoute exact path="/" component={MapModule} />
<PrivateRoute component={NoFound}/>
</Switch>
</div>
<div className={'container_inner_footer'} id={'container_inner_footer'}>
{/* 版权 */}
<Footer />
</div>
</div>
</div>
{/*<Footer/>*/}
</div>
</HashRouter>
);
}
}

初始化地图页面
src/view/Map/index.js

import React from 'react';
import PureRenderMixin from 'react-addons-pure-render-mixin';
import {connect} from 'react-redux';
/**地图样式**/
import 'Views/Map/map.less';
//地图相关组件
import DciMap from 'Components/Map/dciMap'; /***地图制图模块核心组件***/
class MapModule extends React.Component {
constructor(props, context) {
super(props, context);
this.shouldComponentUpdate = PureRenderMixin.shouldComponentUpdate.bind(this);
} render() {
const options = {
dojoConfig: {
has: {
"esri-promise-compatibility": 1
}
},
};
const mapId = 'dciMainMap';
return (
<div className="page_maps g_clear_fix" id={'page_maps'}>
<div className="map_canvas" id="map_canvas" style={{}}>
<div className="container_map">
<DciMap key={0} mapId={mapId} options={options}/>
</div>
</div>
</div>
)
}
}

初始化地图组件、加载天地图
src/components/Map/DMap.js

 const { mapId, initMap } = this.props;
const tileInfo = new TileInfo({
"dpi": 96,
"format": "image/png",
"compressionQuality": 0,
"spatialReference": new SpatialReference({
"wkid": 4490
}),
"rows": 256,
"cols": 256,
"origin": {
"x": -180,
"y": 90
}
……
……

更多的详情见GIS之家小专栏

文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波

arcgis api 4.x for js 结合 react 入门开发系列react全家桶实现加载天地图(附源码下载)的更多相关文章

  1. arcgis api 3.x for js 实现克里金插值渲染图不依赖 GP 服务(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  2. arcgis api 3.x for js 入门开发系列十四最近设施点路径分析(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  3. 【JavaScript】使用纯JS实现多张图片的懒加载(附源码)

    一.效果图如下 上面的效果图,效果需求如下 1.还没加载图片的时候,默认显示加载图片背景图 2.刚开始进入页面,自动加载第一屏幕的图片 3.下拉界面,当一张图片容器完全显露出屏幕,即刻加载图片,替换背 ...

  4. arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  5. arcgis api 3.x for js 解决 textSymbol 文本换行显示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. 【 js 模块加载 】【源码学习】深入学习模块化加载(node.js 模块源码)

    文章提纲: 第一部分:介绍模块规范及之间区别 第二部分:以 node.js 实现模块化规范 源码,深入学习. 一.模块规范 说到模块化加载,就不得先说一说模块规范.模块规范是用来约束每个模块,让其必须 ...

  7. arcgis api 4.x for js 结合 react 入门开发系列初探篇(附源码下载)

    你还在使用 JQuery 或者 Dojo 框架开发 arcgis api 4.x for js 吗?想试试模块化开发吗?随着前端技术的发展,arcgis api 4.x for js 也有了结合 re ...

  8. arcgis api 3.x for js 地图加载多个 SHP 图层压缩以及 json 文件展示(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  9. arcgis api 3.x for js 入门开发系列二十二地图模态层(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

随机推荐

  1. ASP.NET Core 2.2 WebApi 系列【二】使用EF CodeFirst创建数据库

    Code First模式 Code First是指"代码优先"或"代码先行". Code First模式将会基于编写的类和配置,自动创建模型和数据库. 一.准备 ...

  2. Winform中封装DevExpress的MarqueeProgressBarComtrol实现弹窗式进度条效果

    场景 在Winform中实现弹窗式进度条 就是新建一个窗体,然后在窗体中加入进度条控件,然后在触发进度条的事件中将加载进度报告给 进度条控件. 注: 博客主页: https://blog.csdn.n ...

  3. ZooKeeper 面试题

    高强度训练第二十一天总结 1. ZooKeeper 面试题 ZooKeeper 是一个开放源码的分布式协调服务,它是集群的管理者,监视着集群 中各个节点的状态根据节点提交的反馈进行下一步合理操作.最终 ...

  4. Python Web(三)

    Infi-chu: http://www.cnblogs.com/Infi-chu/ 一.Django母版渲染 1.创建母版文件 base.html <!DOCTYPE html> < ...

  5. 纯css实现checkbox样式改变

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name ...

  6. 如何搭建node - express 项目

    基于博主也是个菜鸟,亲身体验后步骤如下: 首先,我们需要安装node.js,  https://www.runoob.com/nodejs/nodejs-install-setup.html 安装完成 ...

  7. SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里

    SAP SD如何将销售订单其它ITEM加入到一个已创建好的交货单里 如下的销售订单,有多个ITEM, 为其中的第一个ITEM创建了DN 80016362, 如果业务发现需要修改该交货单,将销售订单里的 ...

  8. OpenCV:图像的普通二值化

    首先我们来看看图像二值化的过程,opencv一共有好几种不同的二值化算法可以使用,一般来说图像的像素,亮度等条件如果超过了某个或者低于了某个阈值,就会恒等于某个值,可以用于某些物体轮廓的监测: 导包: ...

  9. oracle12.2RAC之OGG安装配置(一)

    前面配置了ACFS用于ogg目录. 上传软件并解压安装: unzip 123014_fbo_ggs_Linux_x64_shiphome.zip cd fbo_ggs_Linux_x64_shipho ...

  10. Linux和Windows的区别

    1. 软件与支持 • Windows 平台:数量和质量的优势,不过大部分为收费软件:由微软官方提供重要支持和服务: • Linux 平台:大都为开源自由软件,用户可以修改定制和再发布,由于基本免费没有 ...