reactjs - 无法使用地图功能在 react-google-maps 上加载多个标记
问题描述
我在通过 map 函数在谷歌地图上渲染多个标记时遇到问题,因为我硬编码的标记显示在地图上,而 dataArr 数组包含我试图传递给标记的不同地方的 lat 和 lng 然后返回它没有显示在地图上没有错误我也无法弄清楚为什么地图上没有显示不同地方的纬度和经度的标记。`
import { SettingsSystemDaydreamTwoTone } from "@material-ui/icons";
import React, { useEffect, useState } from "react";
import {
withScriptjs,
withGoogleMap,
GoogleMap,
Marker,
} from "react-google-maps";
let dataArr = [];
const Map = () => {
return (
<GoogleMap defaultZoom={8} defaultCenter={{ lat: -34.397, lng: 150.644 }}>
<Marker position={{ lat: -34.397, lng: 150.644 }} />
<Marker position={{ lat: -35.397, lng: 151.644 }} />
{dataArr.map((el, i) => {
return <Marker key={i} position={{ lat: el.lat, lng: el.lng }} />;
})}
</GoogleMap>
);
};
const setData = (data) => {
console.log(data);
dataArr = data;
Map();
};
let WrapperMap = withScriptjs(withGoogleMap(Map));
const MapComp = (props) => {
useEffect(() => {
setData(props.results);
}, [props.results]);
return (
<div>
<WrapperMap
googleMapURL="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=geometry,drawing,places&key=AIzaSyAduxOyZEAyoz4mLWTgTobz_7lfDNoc-_I"
loadingElement={<div style={{ height: `100%` }} />}
containerElement={<div style={{ height: `400px` }} />}
mapElement={<div style={{ height: `100%` }} />}
/>
</div>
);
};
export default MapComp;
解决方案
尝试删除标记return
前的语句和花括号,<Marker...>
如下所示
<GoogleMap defaultZoom={8} defaultCenter={{ lat: -34.397, lng: 150.644 }}>
<Marker position={{ lat: -34.397, lng: 150.644 }} />
<Marker position={{ lat: -35.397, lng: 151.644 }} />
{dataArr.map((el, i) =>
<Marker key={i} position={{ lat: el.lat, lng: el.lng }} />;
)}
</GoogleMap>
推荐阅读
- sql - 将多行(具有相同ID)合并为一行?
- java - 如何从字符串中获取所有值?
- vue.js - vue-router beforeRouteUpdate 切换时使用旧参数
- c++ - ReadDirectoryChangesW 仅将单个事件放在 FILE_NOTIFY_INFORMATION 缓冲区中
- android - 如何找出冲突的路径?
- python - gunicorn 发送信息消息处理信号:绞盘
- python - 如何在 PsychoPy 或 Python 中对 WPI 注射泵进行编程?
- c# - 如何隐藏使用 Selenium 打开或切换选项卡时弹出的窗口
- python - 用正则表达式替换python文件内容和行首问题
- sql - SQL HTTP 函数或过程