GoogleMap——谷歌地图Api的使用

这篇具有很好参考价值的文章主要介绍了GoogleMap——谷歌地图Api的使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近公司想要在国外也使用地图功能,而我们国内使用的是高德地图,国外客户需要用谷歌地图,所以去了解了一下谷歌地图的使用,这里记录一下。

准备工作

首先你得有一个谷歌账号,然后得用一点小魔法,去谷歌地图官网申请一个API密钥,现在好像还需要绑定信用卡,有点麻烦,我就直接白嫖公司的了。

开始使用

加载Maps JavaScript API
  • 内嵌方式加载
<script async
    src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
  • 动态加载

使用npm安装

npm install @googlemaps/js-api-loader

导入到具体的页面

import { Loader } from "@googlemaps/js-api-loader"
创建地图
        <div style="height: 400px" id="GMap"></div>  
   initMap() {
      const loader = new Loader({
        apiKey: "YOURKEY",
        version: "YOURVERSION",
      });
      loader.load().then(() => {
        this.myMap = new google.maps.Map(document.getElementById("GMap"), {
        // 纬度在前,经度在后
          center: { lat: -34.397, lng: 150.644 },
          zoom: 8,
        });
      });
    },

这就完成了一个简单的地图创建。

然而,这种简单的地图是肯定不符合我们的需求,所以我们需要再加亿点细节。

首先,在初始化地图时,加上一些限制。

    const loader = new Loader({
         apiKey: "YOURKEY",
         version: "YOURVERSION",
       });
       loader.load().then(() => {
         this.myMap = new google.maps.Map(document.getElementById("BMap-125"), {
           center:  { lat: -34.397, lng: 150.644 },
           //缩放范围
           zoom: 6,
           minZoom: 2,
           maxZoom: 16,
           //限制拖拽范围,防止出现除地图外的灰色区域
           restriction: {
             latLngBounds: {
               north: 85,
               south: -85,
               east: 180,
               west: -180,
             },
           },
           //禁用键盘控制
           keyboardShortcuts:false,
           //关闭地图类型选择控件
           mapTypeControl:false
         });
       });
地图限制
  • 限制缩放等级:maxZoom和minZoom分别对应最大的缩放级别和最小的缩放级别,加上对应的限制,防止地图过大或过小。(补充:缩放等级对应的地图详细。1:世界,5:大陆/洲,10:城市,15:街道,20:建筑物)。
  • 限制地图边界:加上restriction,可以限制地图可以拖拽的范围,防止拖拽地图范围过大,出现灰色区域。
  • 地图控件:可以根据自己的需求,留下哪些地图控件,还可以自定义控件。

标记

为地图添加普通标记:

initMap() {
  // 坐标
  const uluru = { lat: -25.344, lng: 131.031 };
  // 创建地图
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 4,
    center: uluru,
  });
  // 创建标记
  const marker = new google.maps.Marker({
    position: uluru,
    map: map,
  });
  //或者是
  const marker = new google.maps.Marker({
    position: uluru,
  });
  marker.setMap(map);
}

创建自定义标点

    googlePositionHandle(){
    	//地点
        let latLng = new google.maps.LatLng(-25.344,131.031 )
		// 创建地图
		  const map = new google.maps.Map(document.getElementById("map"), {
		    zoom: 4,
		    center: latLng,
		  });
        //设置Marker自定义图标的属性,size是图标尺寸,该尺寸为显示图标的实际尺寸,origin是切图坐标,该坐标是相对于图片左上角默认为(0,0)的相对像素坐标,anchor是锚点坐标,描述经纬度点对应图标中的位置
        var anchor = new google.maps.Point(0, 40)
        var size = new google.maps.Size(32, 32)
        var origin = new google.maps.Point(0, 0)
        var url=require('@/assets/img/p1.png')
        //创建图标
        var icon = new google.maps.MarkerImage(
          url,
          size,
          origin,
          anchor,
        );
        //设置自定义标记图标
        let marker=new google.maps.Marker({
          position: latLng,
          map: map,
          visible: true
        });
        marker.setIcon(icon)
        //标记添加点击事件,点击标记将地图中心设为标记点,放大地图
        marker.addListener('click', function() {
          map.setCenter(latLng)
          map.setZoom(16)
        });
    },

这是用png图片作为自定义图标,还可以使用svg图片作为图标,但是svg作为图标我暂时没搞懂,尤其是复杂的svg图片,所以就不写svg图片作为例子了。

创建信息窗口

  // 坐标
  const uluru = { lat: -25.344, lng: 131.031 };
  // 创建地图
  const map = new google.maps.Map(document.getElementById("map"), {
    zoom: 4,
    center: uluru,
  });
  //标记上方的信息框
  var div='<div style="text-align: center">'+
              '<div>'+alias+'</div>'+
           '</div>'
  let infoWindow = new google.maps.InfoWindow({
          content: div,
      });
       // 创建标记
  const marker = new google.maps.Marker({
    position: uluru,
    map: map,
  });
        //打开信息框
  infoWindow.open({
    anchor: marker,
    map:map,
    });
}

信息窗口是展示在标记的上方。

获取点击处的位置

       const myMap = new google.maps.Map(document.getElementById("GMap"), {
          center: {lat: -34.397, lng: 150.644},
          zoom: 8,
        });
       google.maps.event.addListener(myMap, 'click', function (event) {
          const pos = {
            lat: event.latLng.lat(),
            lng: event.latLng.lng()
          };
          console.log(pos)
        });

打印的位置信息,就是鼠标点击的位置的经纬度。

创建自定义控件
谷歌默认是没有获取当前按钮的控件,如果我们有这种需求,我们可以自己自定义一个控件。

	//添加定位按钮,map为地图实例
    addYourLocationButton(map) {
    var controlDiv = document.createElement('div');
    var firstChild = document.createElement('button');
    firstChild.style.backgroundColor = '#fff';
    firstChild.style.border = 'none';
    firstChild.style.outline = 'none';
    firstChild.style.width = '40px';
    firstChild.style.height = '40px';
    firstChild.style.borderRadius = '2px';
    firstChild.style.boxShadow = '0 1px 4px rgba(0,0,0,0.3)';
    firstChild.style.cursor = 'pointer';
    firstChild.style.marginRight = '10px';
    firstChild.style.padding = '0px';
    firstChild.title = 'Your Location';
    controlDiv.appendChild(firstChild);

    var secondChild = document.createElement('div');
    secondChild.style.margin = '5px';
    secondChild.style.width = '18px';
    secondChild.style.height = '18px';
    secondChild.style.backgroundImage = 'url(https://maps.gstatic.com/tactile/mylocation/mylocation-sprite-1x.png)';
    secondChild.style.backgroundSize = '180px 18px';
    secondChild.style.backgroundPosition = '0px 0px';
    secondChild.style.backgroundRepeat = 'no-repeat';
    secondChild.style.margin='auto'
    secondChild.id = 'location_img';
    firstChild.appendChild(secondChild);
    firstChild.addEventListener('click', function() {
      if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
          const latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);
          map.setCenter(latlng);
          map.setZoom(15)
          var myMarker = new google.maps.Marker({
            animation: google.maps.Animation.DROP,
            position: latlng
          });
          myMarker.setMap(map)
        });
      }
    });
    controlDiv.index = 1;
    map.controls[google.maps.ControlPosition.RIGHT_BOTTOM].push(controlDiv);
  }

这样调用这个方法后,地图上就有了获取当前位置的图标了。

在Echarts中使用谷歌地图
Echarts中默认使用的是百度地图,如果想要使用谷歌地图,需要额外安装插件——echarts-extension-gmap,在github上可以找到。
安装

npm install echarts-extension-gmap --save

使用

import * as echarts from 'echarts';
import 'echarts-extension-gmap';
     this.mapEChart=this.$echarts.init(document.getElementById('gmap'))
     var googleOption = {
       // load gmap component
       gmap: {
                center: [108.39, 39.9],
                // center: { lng: 108.39, lat: 39.9 },
                zoom: 4,
                disableDefaultUI:true,
                renderOnMoving: true,
                // the zIndex of echarts layer for Google Map. `2000` by default.
                echartsLayerZIndex: 2019,
                // whether to enable gesture handling. `true` by default.
                // since v1.4.0
                roam: true,
                minZoom: 2,
                maxZoom: 16,
                //限制拖拽范围,防止出现除地图外的灰色区域
                restriction: {
                  latLngBounds: {
                    north: 85,
                    south: -85,
                    east: 180,
                    west: -180,
                  },
                }
         },
         series: [
                {
                  type: 'scatter',
                  coordinateSystem: 'gmap',
                  data: this.mapPoints,//地图上的点
                  encode: {
                    value: 2
                  },
                  label: {
                    formatter: "{b}",
                    position: "right",
                    show: false
                  },
                  emphasis: {
                    label: {
                      show: true
                    }
                  }
                },
                {
                  type: 'effectScatter',
                  color:'#3ba308',
                  coordinateSystem: 'gmap',
                  data: data,
                  label: {
                    formatter: "{b}",
                    position: "right",
                    show: true
                  },
                  emphasis: {
                    label: {
                      show: true
                    }
                  }
                }
              ]
      		};
     this.mapEChart.setOption(googleOption)
     //获取地图
     var gmap = this.mapEChart.getModel().getComponent('gmap').getGoogleMap();
     //创建标记
	 var marker = new google.maps.Marker({ position: gmap.getCenter() });
	 //设置
     marker.setMap(gmap);     

这就完成了在谷歌地图上构建散点图。

总结

总的来说,谷歌地图的api使用起来还是比较友好的,官网写的也挺详细,如果有不清楚的地方可以多看看官网的例子。本人只是一个菜鸟,如果有什么不对的地方,欢迎评论区指出,谢谢。文章来源地址https://www.toymoban.com/news/detail-453960.html

到了这里,关于GoogleMap——谷歌地图Api的使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在UE5中使用Cesium插件加载谷歌全景地图

    虚幻引擎5(UE5)是一款强大的游戏开发引擎,它提供了许多功能和插件来创建逼真的游戏世界。其中,Cesium是一款流行的地理信息系统(GIS)工具集,它允许您加载和展示地理数据。本文将介绍如何在UE5中使用Cesium插件加载谷歌全景地图,为您打造更逼真的游戏环境。 一、

    2024年02月13日
    浏览(48)
  • 百度、谷歌等搜索引擎高效搜索方法 —— 更快速搜索到你想要内容

    又被称为去广告搜索法,intitle命令,即in title(在标题里)返回的的结果是网页的标题包含该。一般情况下搜索的都会在标题里出现,使用intitle命令一般是在特殊需求下,比如SEO优化等。   又被称为减号搜索法,“1 -2”,减号顾名思义,搜索引擎

    2024年02月04日
    浏览(99)
  • 9个offer,12家公司,35场面试,从微软到谷歌

    翔 一样的书,各种错误概念的堆积,**如果一个错误给我一块钱,我能从这本书搞成万元户。**如果去正规公司拿这本书准备,包你被黑出翔。 4,简历 在MS时,老大曾让我帮忙招几个靠谱的实习生,因此我收到了几百封简历,过了一把HR的瘾。这里说说自己在看简历时发现的

    2024年04月12日
    浏览(33)
  • 【QT--使用百度地图API显示地图并绘制路线】

    先吐槽一下下,本身qt学的就不咋滴,谁想到第一件事就是让写一个上位机工具,根据CAN总线传来的位置信息,在地图上去绘制路线,并获取当前路段的限速信息等。当听到这个需求的时候,第一时间是有点懵逼的。自己原本是没接触过这方面的知识,而且qt学的也特别的垃圾

    2024年01月24日
    浏览(50)
  • 百度地图API的使用

    这篇文章主要想让读者掌握: 百度地图官网 API 百度地图JavaScript API 当前的位置在网页中显示,插入地图 拖拽 点击事件。 应用场景:网页插入百度地图 注意:不关注定位、距离、公交,这些功能一般结合移动端GPS实现 第一步:进入官网 百度地图JavaScript API 直接搜百度地图

    2024年02月14日
    浏览(86)
  • 百度地图API的使用(附案例)

    百度地图JavaScript API是一套由JavaScript语言编写的应用程序接口,可帮助您在网站中构建功能丰富、交互性强的地图应用,支持PC端和移动端基于浏览器的地图应用开发,且支持HTML5特性的地图开发。 在控制台里选择创建应用 选择浏览器端,白名单输入* 我们直接把文档内的代码

    2024年02月06日
    浏览(106)
  • 【App端】uni-app使用百度地图api和echarts省市地图下钻

    近期的app项目中想加一个功能,展示全国各地的某一数据统计情况,想来想去,用echarts做地图数据可视化直观且美观。于是就去研究了如何使用,其实在移动端使用echarts地图踩的bug挺多的,总结如下。 JavaScript API GL账号和获取密钥 1、获取SHA1:Android平台云端打包 - 公共测试

    2024年02月11日
    浏览(51)
  • uniapp上高德(百度)地图API的使用(APP安卓)

    前言 由于在app中没有document,window等对象,所以使用在pc端传统方法引入的方式,将会发现无法引用成功,会出现白屏现象。 目前有两种解决方式: 使用uniapp的web-view方式(百度地图) 使用renderjs来调用document等js对象(高德地图) map.vue: 中间实时显示地图上图标的个数,以及

    2023年04月10日
    浏览(94)
  • 【学习记录】使用高德地图API开发一个简单基础的WebGIS系统(GIS考研院校专题地图网站)

    本人只是一个普普通通的 GIS 学生, 下面是记录我的写的一个作业 demo 的内容, 可能会存在一定的错误, 欢迎在评论区私信交流! *完整功能展示看这里 (B站) *感兴趣可以下载完整 demo 看看 (阿里云盘) 本网站(GIS考研院校可视化专题网站)为2022年GIS考研初期准备择校的学生服务

    2024年02月13日
    浏览(85)
  • 谷歌地图模型自动下载

    本工具是收费软件,学生党勿扰,闹眼子党勿扰,白嫖党勿扰 本工具收费一千元 软件有更新,请看新的视频教程 新视频教程 TAIWAN模型1 TAIWAN模型2 TAIWAN模型3 TAIWAN模型4 只要是搞可视化仿真的,就离不开 fight TAIWAN。于是,我将较低精度的TAIWAN模型下载下来了。模型分为几个部

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包