首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用google-maps-react绘制多个多边形

使用google-maps-react绘制多个多边形
EN

Stack Overflow用户
提问于 2020-01-30 13:45:42
回答 1查看 382关注 0票数 0

我正在尝试更改我的地图容器,以便能够在我的地图上绘制多个多边形。这是我对Map所做的更改

代码语言:javascript
复制
import {
  Map,
  InfoWindow,
  Marker,
  GoogleApiWrapper,
  Polygon
} from 'google-maps-react';
import React, { Component } from 'react';

export class MapContainer extends Component {
  renderMarker = loc => {
    return <Marker key={loc._id} position={loc} />;
  };

  renderPolygon = loc => {
    console.log(loc);
    return (
      <Polygon
        key={loc._id}
        paths={loc}
        strokeColor='#0000FF'
        strokeOpacity={0.8}
        strokeWeight={2}
        fillColor='#0000FF'
        fillOpacity={0.35}
      />
    );
  };

  render() {
    const coords = this.props.initialCenter;
    const markerPositions = this.props.markerPositions;
    const polygonPositions = this.props.polygonPositions;
    const style = this.props.style;
    const center = this.props.center;
    const paths = this.props.paths;

    console.log(this.props.polygonPositions);
    return (
      <Map
        google={this.props.google}
        zoom={18}
        initialCenter={coords}
        style={style}
        center={center}
      >
        {markerPositions.map(this.renderMarker)}
        {polygonPositions.map(this.renderPolygon)}
        {/* <Polygon
          paths={paths}
          strokeColor='#0000FF'
          strokeOpacity={0.8}
          strokeWeight={2}
          fillColor='#0000FF'
          fillOpacity={0.35}
        /> */}
        {/* <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);

我可以接收一组多边形并绘制所有多边形,而不是绘制一个多边形,但到目前为止,我的地图还没有加载。

这就是我是如何从服务中获得多边形绘图的:

代码语言:javascript
复制
const polygon = this.props.places.places.map(place => {
      return place.location.coordinates.map(values =>
        values.map(data => {
          return { lat: data[0], lng: data[1] };
        })
      );
    });

这是从多边形返回的内容。

代码语言:javascript
复制
console.log(
      'POLYGON',
      JSON.stringify(polygon[0]),
      'MULTIPLOS',
      JSON.stringify(polygon)
    );
代码语言:javascript
复制
POLYGON [[{"lat":41.53113384600326,"lng":-8.619018495082855},{"lat":41.53113384600326,"lng":-8.61851692199707},{"lat":41.53129447698251,"lng":-8.61851692199707},{"lat":41.53129447698251,"lng":-8.619018495082855},{"lat":41.53113384600326,"lng":-8.619018495082855}]] 

MULTIPLOS [[[{"lat":41.53113384600326,"lng":-8.619018495082855},{"lat":41.53113384600326,"lng":-8.61851692199707},{"lat":41.53129447698251,"lng":-8.61851692199707},{"lat":41.53129447698251,"lng":-8.619018495082855},{"lat":41.53113384600326,"lng":-8.619018495082855}]],[[{"lat":-8.619018495082855,"lng":41.53113384600326},{"lat":-8.61851692199707,"lng":41.53113384600326},{"lat":-8.61851692199707,"lng":41.53129447698251},{"lat":-8.619018495082855,"lng":41.53129447698251},{"lat":-8.619018495082855,"lng":41.53113384600326}]]]

我可以绘制一个多边形,但如果我可以从我的数据库中绘制多个多边形,那就太好了。有什么帮助吗?

代码语言:javascript
复制
EN

回答 1

Stack Overflow用户

发布于 2020-01-30 15:58:27

您将得到一个数组(多边形)数组(单个多边形坐标数组)。因此,如果你遍历“MULTIPLOS”数组,你应该能够绘制该数组中的所有多边形。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59979770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档