【问题标题】:Unable to load multiple markers on react-google-maps using map function无法使用地图功能在 react-google-maps 上加载多个标记
【发布时间】:2021-01-24 16:08:05
【问题描述】:

我在通过 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;

【问题讨论】:

    标签: reactjs google-maps


    【解决方案1】:

    尝试删除return 语句和&lt;Marker...&gt; 标记前的花括号,如下所示

     <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>
    

    【讨论】:

    • 嗨! nizhabib 我尝试了您提供的解决方案,但它给出了以下错误:预期一个赋值或函数调用,而是看到一个表达式
    • 尝试删除括号,我认为这只是一个小错误。你的代码看起来不错:)
    • 我编辑了答案,删除了 => 之后的括号
    • 它不起作用它和没有显示标记之前一样,
    • 那是因为你的 dataArr 可能是空的。控制台在 .map 函数之前记录 dataArr。只需添加 console.log(dataArr)。它可能会显示一个空数组。 51x1u.csb.app 我已经在沙箱中测试过了。看看吧。
    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2012-12-23
    • 2020-12-03
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    相关资源
    最近更新 更多