Mapbox—geocoder搜索地點error eaching the server

来源:https://www.cnblogs.com/gby-web/archive/2023/07/28/17588435.html
-Advertisement-
Play Games

# Mapbox—geocoder搜索地點error eaching the server [——There was an errorr eaching the server](#focus) 環境說明: vue3.3.4 mapbox-gl: 2.13.0 @mapbox/mapbox-gl-ge ...


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請求參數,並且更改請求地址

  1. 傳入前端傳遞的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;
}
  1. 添加傳入數據的驗證信息
// 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
  });

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 簡介 EtherCAT的主站開發是基於EtherCAT 控制系統的開發中非常重要的環節。目前常見開源的主站代碼為的RT-LAB開發的SOEM (Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master。使用起來SOEM的 ...
  • # 錯誤: Resize inode not valid 對於gpt分區的硬碟一般fsck只能檢查分區, 不能用於檢查整個硬碟, 但是如果對硬碟設備運行時遇到這樣的錯誤 ```bash $ sudo fsck -n /dev/sdc fsck from util-linux 2.37.2 e2fsc ...
  • 本文分享自天翼雲開發者社區《大數據通用組件故障處理》,作者:f****n HDFS 1.HDFS 服務一直異常 檢查HDFS是否處於安全模式。 檢查ZooKeeper服務是否運行正常。 2.HDFS 維護客戶端出現OutOfMemoryError 異常 使用HDFS客戶端之前,需要在HADOOP_C ...
  • 有許多支持多數據源數據轉換和同步的ETL工具可供選擇。以下是一些常見的ETL工具和它們支持多數據源數據轉換和同步的特點: Apache NiFi:Apache NiFi是一個開源的ETL工具,支持多種數據源的連接,包括文件系統、資料庫、消息隊列、網路介面等。它提供了可視化的界面和強大的數據處理功能, ...
  • ### PG資料庫安裝擴展 需要用到pg資料庫的空間擴展postgis,在進行操作之前需要在資料庫中安裝擴展。 ```sql CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology; CREATE EXTENSION postgis_g ...
  • 一、最左首碼法則 如果索引了多列(聯合索引),要遵守最左首碼法則。最左首碼法則指的是查詢從索引的最左列開始,並且不跳過索引中的列,如果跳躍某一列,索引將部分失效(後面的欄位索引失效) 示例1:account_transaction表中創建一個聯合索引,使用method欄位+trader_staff_ ...
  • ![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230726164318392-162588362.png) # 1. 結果集 ## 1.1. sql ```sql select empno,mgr from emp ord ...
  • ### [2023 年 7 月 28 日 22:16:06] ## ref 取 render 方式組件節點 一開始註意到組件 setup 和 render 一起使用的情況,好奇怎麼通過 ref 取到 render 中 jsx 里的節點,一開始試了以下的嘗試,結果是 undefined 的: ```j ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...