javascript - 使用 google-maps-react 绘制多个多边形
问题描述
我试图更改我的地图容器以便能够在我的地图上绘制多个多边形。这是我对 Map 所做的更改
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);
而不是绘制一个多边形,我可以接收它们的数组并将它们全部绘制,但到目前为止我的地图没有加载。
这就是我从服务中获取多边形图的方式:
const polygon = this.props.places.places.map(place => {
return place.location.coordinates.map(values =>
values.map(data => {
return { lat: data[0], lng: data[1] };
})
);
});
这就是从多边形返回的内容。
console.log(
'POLYGON',
JSON.stringify(polygon[0]),
'MULTIPLOS',
JSON.stringify(polygon)
);
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}]]]
我可以绘制一个多边形,但如果我可以从我的数据库中绘制多个多边形就更好了。有什么帮助吗?
解决方案
您正在取回一个数组(多边形)数组(单个多边形坐标数组)。因此,如果您遍历“MULTIPLOS”数组,您应该能够绘制该数组数组中的所有多边形。
推荐阅读
- arbitrary-precision - 为什么不在任意精度整数中使用二进制补码进行减法?
- c# - 在 Windows 登录时启动 .NET Core 桌面应用程序
- c# - 如何使用现有的 for 循环实现空数据行检查
- php - 注册表未注册用户
- javascript - 前端 Javascript 框架(如 Vue.js)如何在不使用 Web 组件的情况下使用自定义元素?
- python - 我收到程序错误:“不支持的格式字符串传递给 list.__format__”
- django - 为什么我的基于类的视图只能使用 GET?
- python - 如何使圆形精灵出现 - pygame
- c++ - 'vlq' 的初始化没有匹配的构造函数
- javascript - 如何在nestjs graphql中实现用户保护