首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用带有primereact的谷歌地图?

如何使用带有primereact的谷歌地图?
EN

Stack Overflow用户
提问于 2022-06-10 13:42:16
回答 1查看 181关注 0票数 1

我正在尝试使用作为primereact库一部分的GMap组件,但我一直收到以下错误:

未处理运行时错误ReferenceError:未定义

我正在开发一个next.js应用程序,下面是我从primerreact库复制/粘贴的简单代码:

代码语言:javascript
复制
import { GMap } from 'primereact/gmap';

const DealershipLocation = () => {

  const options = {
    center: {lat: 36.890257, lng: 30.707417},
    zoom: 12
};
  return (
    <div>
      <GMap options={options} style={{width: '100%', minHeight: '320px'}} />
    </div>
  )
}

export default DealershipLocation
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-10 18:05:21

从GMAP的展示来看,你似乎没有正确地加载Google。

添加这些功能..。key=XXX是你谷歌地图的关键所在

代码语言:javascript
复制
const loadGoogleMaps = (callback) => {
    const existingScript = document.getElementById('googleMaps');

    if (!existingScript) {
        const script = document.createElement('script');
        script.src = 'https://maps.google.com/maps/api/js?key=XXX';
        script.id = 'googleMaps';
        script.async = true;
        script.defer = true;
        document.body.appendChild(script);

        script.onload = () => {
            if (callback) callback();
        };
    }

    if (existingScript && callback) callback();
};

const removeGoogleMaps = () => {
    const mapScript = document.getElementById('googleMaps');

    if (mapScript) {
        mapScript.parentNode.removeChild(mapScript);

        const head = document.getElementsByTagName('head')[0];
        const scripts = head.getElementsByTagName('script');
        for (let i = 0; i < scripts.length; i++) {
            let script = scripts[i];
            let src = script.src;

            if (src.startsWith('https://maps.google.com/maps')) {
                head.removeChild(script);
            }
        }
    }
};

然后把它装进一个反应钩..。

代码语言:javascript
复制
const [googleMapsReady, setGoogleMapsReady] = useState(false);

    useEffect(() => {
        loadGoogleMaps(() => {
            setGoogleMapsReady(true);
        });

        return () => {
            removeGoogleMaps();
        }
    }, []);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72575317

复制
相关文章

相似问题

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