繁体   English   中英

React + Mobx + Openlayers 3

[英]React + mobx + openlayers 3

我有一个使用React的地图应用程序。

它包含3个组件:

  1. 边栏-包含将执行地图功能(例如放大)的按钮。
  2. map-wrapper-包含openlayers地图。
  3. 同时呈现它们的视图。

视图:

 export default class MapView extends Component {

  render() {
    return (
      <div>
          <Sidebar />
          <MapWrapper />
      </div>
    );
  }

边栏:

 export default class Sidebar extends Component {
  render() {
    return (

      <div>
          <ul>
            <li>MAPS</li>
            <li onClick=zoomIn> Zoom In + </li>
            <li onClick=zoomOut> Zoom Out - </li>
          </ul>
      </div>

    );
  }
}

地图就是这样: https : //github.com/pka/ol3-react-example

现在,我要实现以下逻辑:按下缩放将放大地图。

如何使用mobx做到这一点?

这家商店将持有什么? 什么是观察者,什么是可观察者?

问候,伊豆

我会做这样的事情:

// The store:
class MapStore {
  @observable zoom = 4;
}

const store = new MapStore();

// The component:
export default function Sidebar(props) {
  return (
    <div>
      <ul>
        <li>MAPS</li>
        <li onClick={zoomIn}> Zoom In + </li>
        <li onClick={zoomOut}> Zoom Out - </li>
      </ul>
    </div>
  );
}

// The click handlers
function zoomIn() {
  store.zoom++;
}

function zoomOut() {
  store.zoom--;
}

// The observer
// See docs: https://mobxjs.github.io/mobx/refguide/reaction.html
mobx.reaction(
  () => store.zoom,
  (zoom) => {
    map.getView().setZoom(zoom);
  }
);

我没有介绍的一些内容:

  • 从何处获取map实例。
  • 处理最小/最大值以进行zoom

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM