3 个版本
0.1.2 | 2024 年 7 月 27 日 |
---|---|
0.1.1 | 2024 年 7 月 27 日 |
0.1.0 | 2024 年 7 月 26 日 |
#434 in 网页编程
每月 385 次下载
11KB
106 行
Geocoder
提供使用 Google 地理编码 API 的简单方法的 Rust 包。
有关 Google 地理编码 API 的更多信息,请参阅以下链接: Google 地理编码 API
安装
将以下内容添加到您的 Cargo.toml
[dependencies]
geocoder = "0.1.0"
用法
使用示例
use geocoder::Geocoder;
use std::env;
#[tokio::main]
async fn main() {
// Set your API key as an environment variable.
let api_key = env::var("GEOCODER_API_KEY").expect("GEOCODER_API_KEY must be set");
// Create a new Geocoder instance.
let geocoder = Geocoder::new(&api_key);
// Geocode an address to a location (latitude, longitude).
match geocoder.geocode("1600 Amphitheatre Parkway, Mountain View, CA").await {
Ok(address) => {
println!("Formatted address: {}", address.formatted_address);
}
Err(e) => eprintln!("Error: {}", e),
}
}
示例
将地址转换为纬度和经度
use geocoder::Geocoder;
use std::env;
#[tokio::main]
async fn main() {
let api_key = env::var("GEOCODER_API_KEY").expect("GEOCODER_API_KEY must be set");
let geocoder = Geocoder::new(&api_key);
match geocoder.geocode("1600 Amphitheatre Parkway, Mountain View, CA").await {
Ok(address) => {
println!("Formatted address: {}", address.formatted_address);
println!("Latitude: {}", address.geometry.location.lat);
println!("Longitude: {}", address.geometry.location.lng);
}
Err(e) => eprintln!("Error: {}", e),
}
}
逆向地理编码 将纬度和经度转换为地址
use geocoder::{Geocoder, structs::LatLng};
use std::env;
#[tokio::main]
async fn main() {
let api_key = env::var("GEOCODER_API_KEY").expect("GEOCODER_API_KEY must be set");
let geocoder = Geocoder::new(&api_key);
let location = LatLng { lat: 37.4224764, lng: -122.0842499 };
match geocoder.reverse_geocode(location).await {
Ok(addresses) => {
if let Some(address) = addresses.first() {
println!("Formatted address: {}", address.formatted_address);
}
}
Err(e) => eprintln!("Error: {}", e),
}
}
许可证
本项目采用 MIT 许可证 - 有关详细信息,请参阅 LICENSE 文件。
贡献
- 创建一个问题(可选)
- 分支仓库
- 进行更改
- 提交更改(代码示例:
git commit -am 'Some cool feature'
) - 推送到分支(代码示例:
git push origin master
) - 创建一个新的拉取请求
使用异步函数
通过更多努力,您可以使用 异步 函数与 tokio 一起使用。
use geocoder::Geocoder;
use std::env;
use tokio::task;
async fn geocode_address(geocoder: Geocoder, address: &str) {
match geocoder.geocode(address).await {
Ok(result) => {
println!("Formatted address: {}", result.formatted_address);
}
Err(e) => eprintln!("Error: {}", e),
}
}
#[tokio::main]
async fn main() {
let api_key = env::var("GEOCODER_API_KEY").expect("GEOCODER_API_KEY must be set");
let geocoder = Geocoder::new(&api_key);
let address = "1600 Amphitheatre Parkway, Mountain View, CA";
let handle = task::spawn(async move {
geocode_address(geocoder, address).await;
});
handle.await.unwrap();
}
依赖项
~6–17MB
~246K SLoC