Angular9在某一个组件中使用Google map

前言

一般来说,Anuglar引用外部的JS或者CSS,会在index.html中引用,但是这样子会使得项目变得臃肿,对于只有某一些组件才会用到的第三方js来说,放到index根目录非常不合适。这里就拿google map举例,如何在某一组件中使用。

解决方式

在app下创建一个Component

ng g c google-map

在这里插入图片描述
google-map.component.ts

// 在构造函数中直接创建一个script,在运行该组件时生成到DOM中
  constructor() {
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.async = true;
    script.defer = true;
    script.src = "https://maps.googleapis.com/maps/api/js?key=自己的秘钥";   // 这里key换成自己的秘钥即可
    document.body.appendChild(script);
    
  // 在初始化函数中,监听页面加载进度,加载完成时执行内部代码(load会等待Map加载完成才会执行)
  ngOnInit() {
    window.addEventListener('load', (event) => {
    
      if(typeof google !== 'undefined'){
      // 执行成功就可以正常执行google map 代码了
            that.map = new google.maps.Map(document.getElementById('map'), {
      		zoom: 15,
      		center: { lat: 22, lng: 123 }
  		  });
      }  else  {
        alert('Google map failed to connect')   //  VPN没有挂上之类的,其他原因导致google map没有加载成功的提示
      }
  });
  }

这样子操作就不用在index.html里面写google map的js引用了,完全可以正常执行google map且不会有BUG。

没有挂上VPN的报错提示
在这里插入图片描述
正常连接成功的样子
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值