Google Map api国内正常使用该如何配置(2021最新)

本文涉及的产品
.cn 域名,1个 12个月
简介: Google Map api国内正常使用该如何配置(2021最新)

最近有客户要求给他们网站做地图方面的功能,由于某些原因,网站必须使用google map,而且希望用到geocoding。大家知道google map api调用国内已经访问不了,虽然网上有很多教程,什么替换ip啊,把maps.google.com改成maps.google.cn。但其实这些方法都是掉了牙的,早就不管用。

今天我把我的安装方法分享出来。

申请api接口


首先,我们需要申请Geocoding api和google map api。你得有一个google帐号,访问 google map api console,根据自己需求来申请相关的api。我申请的比较多。

Places API

Maps JavaScript API

Time Zone API

Geocoding API

Maps Static API

你们可以根据各自需求来申请。也可以访问www.pjcourse.com看最后的应用效果

image.png

申请这个比较简单,

1.新建项目

2.搜索相应api,申请

3.转到api和服务这一块,创建凭据。这些凭据就是api key,也用来限制api的具体应用范围。

image.png

4.最后需要做结算。现在结算是免费试用阶段,申请的话,只要有一张信用卡就可以,因为已经没有了中国地区的选项,所以地址选择香港。会扣除8港元,信用卡验证通过之后会退回。

这么一来,所以的申请算结束了。

配置子域名


我用的是cloudflare,所以直接在上面新开两个子域名,maps.example.com,mapsapis.example.com 。这里example替换成你自己的域名就可以。

配置ssl,我用的是let's encrypt,自动90天就会续签的。

sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
sudo systemctl status certbot.timer

输出结果如下,就说明自动续签正常。

● certbot.timer - Run certbot twice daily
Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled)
Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago
Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left
Triggers: ● certbot.service

安装必要的模块


我的配置环境是ubuntu 20.04, nginx。

  1. 安装replace-filter-nginx-module模块

安装之前,首先需要安装sregex

git clone https://github.com/agentzh/sregex
cd sregex/
make
make install

下载replace-filter-nginx-module

git clone https://github.com/agentzh/replace-filter-nginx-module
nginx -V

这里用到nginx -V。主要是把nginx的模块全部显示出来,等会需要重新编译。

wget https://nginx.org/download/nginx-1.18.0.tar.gz
tar xvf nginx-1.18.0.tar.gz
cd nginx-1.18.0/
./configure --with-cc-opt='-g -O2 -fdebug-prefix-map=/build/nginx-5J5hor/nginx-1.18.0=. -fstack-protector-strong -Wformat -Werror=format-security -fPIC -Wdate-time -D\_FORTIFY\_SOURCE=2' --with-ld-opt='-Wl,-Bsymbolic-functions -Wl,-z,relro -Wl,-z,now -fPIC' --prefix=/usr/share/nginx --conf-path=/etc/nginx/nginx.conf --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --lock-path=/var/lock/nginx.lock --pid-path=/run/nginx.pid --modules-path=/usr/lib/nginx/modules --http-client-body-temp-path=/var/lib/nginx/body --http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-proxy-temp-path=/var/lib/nginx/proxy --http-scgi-temp-path=/var/lib/nginx/scgi --http-uwsgi-temp-path=/var/lib/nginx/uwsgi --with-debug --with-compat --with-pcre-jit --with-http\_ssl\_module --with-http\_stub\_status\_module --with-http\_realip\_module --with-http\_auth\_request\_module --with-http\_v2\_module --with-http\_dav\_module --with-http\_slice\_module --with-threads --with-http\_addition\_module --with-http\_gunzip\_module --with-http\_gzip\_static\_module --with-http\_image\_filter\_module=dynamic --with-http\_sub\_module --with-http\_xslt\_module=dynamic --with-stream=dynamic --with-stream\_ssl\_module --with-mail=dynamic --with-mail\_ssl\_module --add-module=/root/replace-filter-nginx-module
make

这里注意一下,--add-module=/root/replace-filter-nginx-module。需要添加进去。其它的配置选项,参考你们自己的nginx -V参数结果。

一般重新编译的时候,都会有一堆报错。这主要是和你的模块配置参数有关,你只要把相应的模块安装上就可以。比如我遇到以下这些:

pcre

sudo apt-get install libpcre3 libpcre3-dev
gd lib
Plain  Text
apt install libgd-dev
openssl
Plain  Text
sudo apt-get install libssl-dev

最后,把nginx做个备份,再替换掉。

cp /usr/sbin/nginx /usr/sbin/nginx.bak
cp ./objs/nginx /usr/sbin/

配置nginx


在/etc/nginx/sites-enabled目录下,新建一个配置maps.example.com.conf。

server {# default\_server;# default\_server;
    server_name    maps.example.com mapsapis.example.com;
    location /maps/ {
    default_type text/javascript;
    proxy\_set\_header Accept-Encoding '';
    proxy_pass https://maps.googleapis.com/maps/;
    replace\_filter\_max\_buffered\_size 500k;
    replace\_filter\_last_modified keep;
    replace\_filter\_types text/javascript application/javascript;  
    replace_filter maps.googleapis.com mapsapis.example.com ig;
    }
    location /maps-api-v3/ {
        proxy_pass  https://maps.googleapis.com/maps-api-v3/;
    }
    listen \[::\]:443 ssl http2;
    listen 443 ssl http2;
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl\_certificate\_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
}

至此,所有的配置已经完成。测试了一下,直接通过访问自己的子域名,就可以调用maps.googleapis.com的地图接口了。

image.png

文章来源:www.pjcourse.com

目录
相关文章
|
2月前
|
Java API 数据库
构建RESTful API已经成为现代Web开发的标准做法之一。Spring Boot框架因其简洁的配置、快速的启动特性及丰富的功能集而备受开发者青睐。
【10月更文挑战第11天】本文介绍如何使用Spring Boot构建在线图书管理系统的RESTful API。通过创建Spring Boot项目,定义`Book`实体类、`BookRepository`接口和`BookService`服务类,最后实现`BookController`控制器来处理HTTP请求,展示了从基础环境搭建到API测试的完整过程。
60 4
|
4月前
|
存储 API
Map常用API
Map常用API
39 2
|
4月前
|
存储 算法 Java
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
Go 通过 Map/Filter/ForEach 等流式 API 高效处理数据
|
4月前
|
前端开发 API 网络架构
【Azure 应用服务】能否通过 Authentication 模块配置 Azure AD 保护 API 应用?
【Azure 应用服务】能否通过 Authentication 模块配置 Azure AD 保护 API 应用?
|
4月前
|
安全 API 网络安全
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
【Azure API 管理】APIM如何配置客户端证书的CRL检测策略
|
5月前
|
API 数据库 数据安全/隐私保护
Django配置api、管理系统和视图
Django配置api、管理系统和视图
133 1
|
5月前
|
API
zookeeper 使用api 进行节点增删改查及实现简易的配置中心
zookeeper 使用api 进行节点增删改查及实现简易的配置中心
54 2
|
4月前
|
JSON 算法 API
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
【Azure API 管理】APIM 配置Validate-JWT策略,验证RS256非对称(公钥/私钥)加密的Token
|
4月前
|
API
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
【Azure 环境】在Azure活动目录中的应用注册,给应用添加API权限时发现API权限配置缺失
|
4月前
|
前端开发 API
【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)
【API管理 APIM】APIM中如何配置使用URL路径的方式传递参数(如由test.htm?name=xxx 变为test\xxx)