
OpenAI ChatGPT API 與 React JS 的完美結合:全面指南
地理編碼是將物理地址轉換為地理坐標的過程。您可以使用地理編碼在地圖上放置標記并發現其他地理信息。
以下是地理編碼的示例:
1600 Amphitheatre Parkway, Mountain View, CA ->緯度:37.423021 & 經度:-122.083739
在本教程中,您將學習如何使用使用地理編碼 RESTful API 的 Node.js 創建 Web 應用程序。這是我們的最終演示:
大多數為衛生、金融甚至軍事系統編寫的軟件都使用地理編碼功能。
如果您正在尋找將地理編碼解決方案實施或集成到系統中的最新方法,Positionstack 隨時為您服務。
positionstack API 是一個免費的地理編碼 API,受到全球開發人員和企業的信賴。
positionstack 是市場上領先的地理編碼 RESTful API 之一。它通過一個強大而健壯的 API 提供企業級功能。
PositionTack 覆蓋全球 2+ 億個地址,每天處理 1+ 億次地理編碼 API 查找。它是適用于您的系統的可靠、有效的地理編碼服務。
由高度可擴展的apilayer平臺支持的PositionStack API能夠處理數十億次地理編碼請求,響應時間介于10到100毫秒之間。
正如我們之前提到的,positionstack API 為其某些功能提供了免費計劃。您可以前往訂閱頁面并選擇免費訂閱計劃以獲取您的 API 訪問密鑰。
成功注冊后,您可以通過將訪問密鑰添加到 URL 來使用核心 Positionstack API 端點:
http://api.positionstack.com/v1/reverse
? access_key = YOUR_ACCESS_KEY
& query
=
40.7638435,-73.9729691
通過將此請求發送到終端節點,您可以獲得如下 API 響應:
{
"data": [
{
"latitude": 38.897675,
"longitude": -77.036547,
"type": "address",
"name": "1600 Pennsylvania Avenue NW",
"number": "1600",
"postal_code": "20500",
"street": "Pennsylvania Avenue NW",
"confidence": 1,
"region": "District of Columbia",
"region_code": "DC",
"county": "District of Columbia",
"locality": "Washington",
"administrative_area": null,
"neighbourhood": "White House Grounds",
"country": "United States",
"country_code": "USA",
"continent": "North America",
"label": "1600 Pennsylvania Avenue NW, Washington, DC, USA"
},
{
"latitude": 38.897473,
"longitude": -77.036548,
"type": "address",
"name": "1600 Pennsylvania Avenue Northwest",
"number": "1600",
"postal_code": "20500",
"street": "Pennsylvania Avenue Northwest",
"confidence": 1,
"region": "District of Columbia",
"region_code": "DC",
"county": "District of Columbia",
"locality": "Washington",
"administrative_area": null,
"neighbourhood": "White House Grounds",
"country": "United States",
"country_code": "USA",
"continent": "North America",
"label": "1600 Pennsylvania Avenue Northwest, Washington, DC, USA"
}
]
}
批量請求是一種一次性向API發送多個正向或反向地理編碼查詢的方法。盡管批量請求看起來與常規地理編碼請求非常相似,但它們需要額外的參數。
發出批量請求很容易。首先,您需要指定 batch 請求參數,該參數承載多個查詢。下面是一個示例:
{
"batch":[
{
"query": "Main Street",
"country": "US",
"region": "Minnesota"
},
{
"query": "Main Street",
"country": "US",
"region": "Illinois"
},
{
"query": "Main Street",
"country": "US",
"region": "Missouri"
}
]
}
如果您已經向終端節點發出了請求,則可以看到每個 API 響應都攜帶一個 map_url 對象。它包含一個 URL,該 URL 指向與地理編碼結果關聯的可嵌入地圖。
您可以使用 iFrame 元素將其嵌入到 Web 或任何其他應用程序中。
"map_url": "http://map.positionstack.com/47.735549,-94.548447"
此外,您還可以找到其他幾個功能:
在開始之前,您需要安裝 Node.js
之后,創建一個空文件夾并使用這些命令初始化一個新的 Node.js 項目。
const express = require("express")
const axios = require("axios")
const app = express()
const port = 1998
app.use(express.static('public'))
app.use('/css', express.static(__dirname + 'public/css'))
app.use('/img', express.static(__dirname + 'public/img'))
app.use('/js', express.static(__dirname + 'public/js'))
app.set('views', './src/views')
app.set('view engine', 'ejs')
app.get('/api/:version', function(req, res) {
res.send(req.params.version);
});
app.get("/geocoding", async function(req, res) {
try {
const API_ACC_KEY = "1ea2a2d4a6a80f98b92ea1129ad3a0b2";
const position = await axios.get(
http://api.positionstack.com/v1/forward?access_key=${API_ACC_KEY}&query=1600%20Pennsylvania%20Ave%20NW,%20Washington%20DC
);
res.render("positionstack", { info: position.data.data[0] });
} catch (error) {
if (error.response) {
console.log(error.response.data);
} else if (error.request) {
console.log(error.request);
} else {
console.log("Error", error.message);
}
}
});
app.get('/', (req, res) => res.send('Index Page'))
app.listen(port, () => console.log(Running on ${port} port
))
<div class="card-body">
<form>
<div class="row">
<div class="col">
<div class="mb-3"><label class="form-label" for="latitude"><strong>Latitude: <%- info.latitude %></strong></label></div>
<div class="mb-3"><label class="form-label" for="number"><strong>Number: <%- info.number %></strong></label></div>
</div>
<div class="col">
<div class="mb-3"><label class="form-label" for="longitude"><strong>Longitude: <%- info.longitude %></strong><br></label></div>
</div>
<div class="col">
<div class="mb-3"><label class="form-label" for="type"><strong>Type: <%- info.type %></strong><br></label></div>
</div>
</div>
<div class="row">
<div class="col">
<div class="mb-3"><label class="form-label" for="postal_code"><strong>Postal Code: <%- info.postal_code %></strong><br></label></div>
</div>
<div class="col">
<div class="mb-3"><label class="form-label" for="region"><strong>Region: <%- info.region %></strong><br></label></div>
</div>
</div>
<div class="row">
<div class="col">
<div class="mb-3"><label class="form-label" for="country"><strong>Country: <%- info.country %></strong><br></label></div>
</div>
<div class="col">
<div class="mb-3"><label class="form-label" for="region_code"><strong>Region Code: <%- info.region_code %></strong><br></label></div>
</div>
</div>
<div class="mb-3"></div>
</form>
</div>
現在,您可以使用以下命令啟動 Web 應用程序:
地理編碼對許多企業和團體非常有用。我們已經看到了地理編碼如何幫助公平貸款、跟蹤健康問題甚至作用于軍事數據。PositionStack 是數據地理編碼的絕佳工具。它覆蓋全球地址,每天可以處理大量請求。
借助 PositionStack,開發人員可以快速將地理編碼添加到他們的應用程序中。它易于使用,并提供實時編碼和公平定價等功能。PositionStack 使地理編碼變得簡單,無論您是需要基本的地址轉換還是更高級的基于位置的服務。對于想要在項目中使用位置數據的任何人來說,它都是首選。
它正在將地址轉換為地圖點,例如將“1600 Amphitheatre Parkway, Mountain View, CA”更改為地圖上的一個點。
它的工作原理是使用特殊服務或軟件獲取地址并在地圖上找到其確切位置。
它有助于制作地圖、查找地點、交付物品和在系統中組織位置數據。
這可能很棘手,因為地址可能不同,地圖需要更新,并且大型工作可能需要大量資源。
原文來源:https://blog.apilayer.com/ultimate-geocoding-api-integration-with-node-js/