Mapbox—geocoder搜索地点error eaching the server
Mapbox—geocoder搜索地点error eaching the server
——There was an errorr eaching the server
环境说明:
vue3.3.4
mapbox-gl: 2.13.0
@mapbox/mapbox-gl-geocoder: 4.7.4
一、错误呈现
当地图初始化成功后,添加mapbox geocoder的控件,本地开发环境测试没有问题,vue3环境使用vite打包后,检索地点(北京)出现There was an errorr eaching the server的错误提示。

此时的网络请求如下:

二、解决办法
经过对比本地开发测试的成功案例,和打包后的错误请求,再加上mapbox/mapbox-gl-geocoder源码(https://github.com/mapbox/mapbox-gl-geocoder)学习,解决办法如下:
- 错误原因:根据输入地点检索符合城市信息的网络请求缺少 access_token,并且错误的网络请求前面的地址是本地的IP,正确的应该为https://api.mapbox.com


解决思路:更改源码
原理:在网络请求前添加access_token请求参数,并且更改请求地址
- 传入前端传递的access_token
// *\node_modules\@mapbox\mapbox-gl-geocoder\lib\index.js
// _geocode函数内部
const config = this._setupConfig(requestType, searchInput);
// 此处添加
config.access_token = this.options.accessToken; // 添加的token
var request;
switch (requestType) {
case GEOCODE_REQUEST_TYPE.LOCAL:
request = Promise.resolve();
break;
case GEOCODE_REQUEST_TYPE.FORWARD:
request = this.geocoderService.forwardGeocode(config).send();
break;
case GEOCODE_REQUEST_TYPE.REVERSE:
request = this.geocoderService.reverseGeocode(config).send();
break;
}
- 添加传入数据的验证信息
// node_modules\@mapbox\mapbox-sdk\services\geocoding.js
// Geocoding.forwardGeocode函数
v.assertShape({
query: v.required(v.string),
mode: v.oneOf('mapbox.places', 'mapbox.places-permanent'),
countries: v.arrayOf(v.string),
proximity: v.oneOf(v.coordinates, 'ip'),
types: v.arrayOf(v.oneOf(featureTypes)),
autocomplete: v.boolean,
bbox: v.arrayOf(v.number),
limit: v.number,
language: v.arrayOf(v.string),
routing: v.boolean,
fuzzyMatch: v.boolean,
worldview: v.string,
// 此处添加
access_token: v.string, // 添加access_token验证,如果不添加则传入参数会报错:验证失败
})(config);
3. 修改请求参数
备注:可以把config.access_token固定,换成自己的mapbox token,这样步骤1和2就不需要更改(下文是根据前端传入的token动态进行变更)
// node_modules\@mapbox\mapbox-sdk\services\geocoding.js
// Geocoding.forwardGeocode函数
return this.client.createRequest({
method: 'GET',
// 此处修改,添加https://api.mapbox.com前缀 和 "?access_token=" + config.access_token后缀
path: 'https://api.mapbox.com/geocoding/v5/:mode/:query.json' + "?access_token=" + config.access_token,
params: pick(config, ['mode', 'query']),
query: query
});
Mapbox—geocoder搜索地点error eaching the server的更多相关文章
- mysqldump: Error: Binlogging on server not active
在学习使用mysqldump时,使用mysqldump备份时,遇到了下面两个错误: [root@DB-Server backup]# ./mysql_dump_back.sh Warning: Usi ...
- JMeter遇到的问题一:Error writing to server(转)
Java.io.IOException: Error writing to server异常:我测试500个并发时,系统没有问题:可当我把线程数加到800时,就出现错误了,在"查看结果树&q ...
- 502 Proxy Error The proxy server received an invalid response from an upstream server
Proxy Error The proxy server received an invalid response from an upstream server. The proxy server ...
- centos 7 运行Quartus ii 17.0 标准版,下载程序时遇到错误error (209053): unexpected error in jtag server -- error code 89
对于错误error (209053): unexpected error in jtag server -- error code 89,它产生的原因在于,在linux系统下,Quartus ii的驱 ...
- 在使用pydelicious时出现HTTP Error 500: Internal Server Error的错误的解决方法:
问题:在学习<集体智慧编程>的过程中,第二章中如果你遇到了pydelicious.PyDeliciousException: HTTP Error 500: Internal Server ...
- flask+mako+peewee(下)(解决了Error 2006: MySQL server has gone away)
这篇主要介绍在这次项目中使用的peewee 文档地址:http://peewee.readthedocs.org/en/latest/index.html 首先我们要初始化一个数据库连接对象.这里我使 ...
- ThinkPHP出现General error: 2006 MySQL server has gone away的解决方法
错误: #13 {main}SQLSTATE[HY000]: General error: 2006 MySQL server has gone awayFILE: \ThinkPHP\Library ...
- python urllib2导出elasticsearch数据时 返回 "urllib2.HTTPError: HTTP Error 500: Internal Server Error"
0.业务场景 将ES中某个index的某个字段的所有数据,导出到文件中 1.ES数据导出方法简述 ES数据导出方法,我主要找到了以下几个方面,欢迎大家补充: ES官方API:snapshot and ...
- 记一次安装kolla遇到DockerException: Error while fetching server API version: Timeout value connect was Timeout的问题
1)环境信息: docker版本:17.09,当docker的版本是12.06时,也会报这个错误 [root@localhost ~]# docker --version Docker version ...
- An internal error occurred during: "Checking tomcat state". Error while reading server.xml
An internal error occurred during: "Checking tomcat state". Error while reading server.xml ...
随机推荐
- [C++基础入门] 4、 程序流程结构
文章目录 4 程序流程结构 4.1 选择结构 4.1.1 if语句 4.1.2 三目运算符 4.1.3 switch语句 4.2 循环结构 4.2.1 while循环语句 4.2.2 do...whi ...
- 【机器学习与深度学习理论要点】20. 什么是激活函数,为什么要用激活函数,常见的激活函数和特点,softmax函数
1)什么是激活函数,为什么要用激活函数? 激活函数,指神经网络中将输入信号的总和转换为输出信号的函数,激活函数将多层感知机输出转换为非线性,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应 ...
- 2022-04-27:用go语言重写ffmpeg的remuxing.c示例。
2022-04-27:用go语言重写ffmpeg的remuxing.c示例. 答案2022-04-27: ffmpeg的remuxing.c是一个用于将多媒体文件从一种容器格式转换为另一种容器格式的命 ...
- 2022-02-13:k8s安装gitlab,yaml如何写?
2022-02-13:k8s安装gitlab,yaml如何写? 答案2022-02-13: yaml如下: apiVersion: apps/v1 kind: Deployment metadata: ...
- 2021-12-04:公交路线。给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶。 例如,路线 routes[0]
2021-12-04:公交路线.给你一个数组 routes ,表示一系列公交线路,其中每个 routes[i] 表示一条公交线路,第 i 辆公交车将会在上面循环行驶. 例如,路线 routes[0] ...
- Django笔记四十之运行Django环境的python脚本
本文首发于公众号:Hunter后端 原文链接:Django笔记四十之运行Django环境的python脚本 这一篇笔记介绍如何在 Django 中运行脚本. 假设说我们要实现一个功能,需要获取 blo ...
- 用go设计开发一个自己的轻量级登录库/框架吧(业务篇)
用go设计开发一个自己的轻量级登录库/框架吧(业务篇) 本篇会讲讲框架的登录业务的实现.实现三种登录模式: 同一用户只能登录一次 同一用户多次登录多token 同一用户多次登录共享一个token 源码 ...
- tkinter的Entry设置为不可编辑状态
前 首先我们知道,tkinter中有许许多多的控件,其中使用频繁的控件之一就是Entry(输入框),那么怎么设置它为不可编辑状态呢? state选项 一般我们在写Entry的时候只传入了一个maste ...
- Go编程快闪之 logrus日志库
战术卧倒 golang中常见的日志包是logrus, 根据logrus的胚子和我们的生产要求,给出一个生产可用的logrus实践姿势. 主谓宾定状补 logrus是一个结构化的.可插拔的.兼容gola ...
- Net 如何获取私有属性
.Net的私有属性.成员变量.方法,都可以通过反射获取调用,当然正常我们不会这么操作 此章只是做一个反射科普,像EFCore从数据库取值的底层框架就是通过反射直接操作私有的成员变量,而不是方法. 直接 ...