【问题标题】:Displaying a list of Markers with React使用 React 显示标记列表
【发布时间】:2020-05-09 19:37:36
【问题描述】:

我正在尝试显示存储在我的 mongodb 数据库中的带有 lat 和 lng 的标记列表。 我正在使用 google-maps-react,这是我的子地图组件

import {
  Map,
  InfoWindow,
  Marker,
  GoogleApiWrapper,
  Polygon
} from 'google-maps-react';
import React, { Component } from 'react';
export class MapContainer extends Component {
  render() {
    const coords = this.props.initialCenter;
    const position = this.props.position;
    const paths = this.props.paths;
    const style = this.props.style;
    const center = this.props.center;
    console.log(this.props);
    return (
      <Map
        google={this.props.google}
        zoom={18}
        initialCenter={coords}
        style={style}
        center={center}
      >
        <Marker
          onClick={this.onMarkerClick}
          name={'Current location'}
          position={position}
        />
        <InfoWindow onClose={this.onInfoWindowClose}>
          <div>
            <h1>Test</h1>
          </div>
        </InfoWindow>
        <Polygon
          paths={paths}
          strokeColor='#0000FF'
          strokeOpacity={0.8}
          strokeWeight={2}
          fillColor='#0000FF'
          fillOpacity={0.35}
        />
      </Map>
    );
  }
}
export default GoogleApiWrapper({
  apiKey: process.env.REACT_APP_GOOGLE_MAPS_API_TEST
})(MapContainer);

我从这里的端点获取坐标

const centers = this.props.places.places.map(place => {
      return {
        lat: place.center[0],
        lng: place.center[1]
      };
    });

我试图像这样显示列表:

const position = { ...centers} ->什么都不做 //常量位置 = { lat: 41.53113384600326, lng: -8.619018495082855 }; -> 打印一个标记 //const position = center[0] -> 打印一个标记

我正在使用这样的子组件:

<MapContainer
          initialCenter={initialCenter}
          position={position}
          paths={paths}
          style={style}
          center={center}
        />

对此有什么帮助吗?

编辑:

子组件改为

<Marker
          onClick={this.onMarkerClick}
          name={'Current location'}
          position={{ position }}
        />

在父母身上:

中心在哪里:

<MapContainer
          initialCenter={initialCenter}
          paths={paths}
          style={style}
          center={center}
          position={centers.map(p => (
            <Marker
              onClick={() => this.onMarkerClick(p)}
              name={'Current location'} // You should probably have a "name" field for each positions
              position={p}
            />
          ))}
        ></MapContainer>
const centers = this.props.places.places.map(place => {
      return {
        lat: place.center[0],
        lng: place.center[1]
      };
    });

还没显示

【问题讨论】:

  • 您需要为中心的每个元素渲染 。 center.map(center=>

标签: node.js reactjs mongodb


【解决方案1】:

您需要将位置数组作为道具发送给您的组件,然后像这样渲染它们:

this.props.positions.map(p => <Marker
  onClick={() => this.onMarkerClick(p)}
  name={'Current location'} // You should probably have a "name" field for each positions
  position={p}
/>)

【讨论】:

  • 这是在子组件上,对吧?而在父我做位置={centers} //里面的东西数组?
  • this.props.positions 未定义
  • 您可以将positions 作为道具传递给组件,包含所有标记位置。
猜你喜欢
  • 1970-01-01
  • 2020-02-22
  • 1970-01-01
  • 2019-09-29
  • 2017-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-21
相关资源
最近更新 更多