【ハッカソン】2024年 第1回 Qiitaハッカソン参加Memo🌟
久しぶりの Next.js環境構築
- 以前書いた記事
State管理は、Valtio
JavaScript で 現在地をGPSで取得する方法は?
JavaScriptで現在地を取得するには、getCurrentPosition()メソッドを使用します。
このメソッドは、ユーザーの現在位置を特定するための非同期通信を開始して、
位置取得デバイスから最新の情報を取得します。現在位置が特定されるとコールバック関数が実行されます。
また、getCurrentPosition()を呼び出して取得する方法と自動的に取得(位置情報を監視)し続ける方法があります。
Geolocation APIとは、JavaScriptで位置情報を取得するAPIのことです。
現在W3Cで仕様を策定中ではありますが、Firefox 3.5やGoogle Chrome 5、Safari 5など、いくつかのモダンなブラウザではすでに利用できます。
// 自分の位置情報を取得する
// export default
function myGeoLocation() {
return new Promise((resolve, reject) => {
navigator.geolocation.getCurrentPosition(
(position) => {
resolve(position);
},
(error) => {
reject(error);
}
);
});
}
const position = await myGeoLocation();
console.log(position);
PandaCSS 導入
現在の緯度経度などの位置情報から、近くの遊び場を取得するには?
- Webスクレイピング
- Google Map API
- GPT
などかな?
JavaScriptのプログラムで、現在の緯度経度などの位置情報から、近くの遊び場を取得するには?
🗒️ Answer
JavaScriptで現在の位置情報を取得し、その情報を利用して近くの遊び場を探すには、次のステップに従います:
Geolocation APIを使用して位置情報を取得する:
navigator.geolocation.getCurrentPosition() メソッドを使用してユーザーの現在位置(緯度と経度)を取得しま】。
外部APIを使用して近くの遊び場を検索する:
取得した緯度と経度をパラメータとして、Google Places APIなどの外部地点情報サービスAPIを呼び出し、指定した範囲内の遊び場の情報を取得します。
結果を処理して表示する:
外部APIから得られた遊び場の情報(名前、住所、評価など)をユーザーに表示します。必要に応じて、地図上にピンを打つなどして視覚的に情報を提供することも可能です。
Google Map API 概要・全体像・使い方など
UI・UX設計
- 基本の環境構築と、アイデアが固まったところで、UI・UX・ユーザーストーリーを考える🌟
ユーザーストーリー
現在の位置情報から、住所を特定する
- 現在の位置情報から、住所を特定する (逆ジオコーディング )
次の3記事あたりが特に参考になる🌟
参考・引用
国土交通省の提供する位置情報データとその活用方法について🌟
Google Maps API の Key取得について
参考・引用
OSMデータを活用して、無料で現在位置からの周辺情報を取得する
OSMデータとは?
OSMデータ(OpenStreetMapデータ)とは、地理空間情報の巨大なデータベースです。OpenStreetMapは、世界規模の共同プロジェクトで、誰でも自由に利用できる二次元の地図を作成しています。
OpenStreetMapは、GPS機能を持った携帯端末、空中写真、その他の無料機械からのデータをもとに作られています。
また、編集ツール上で道1本から手入力での追加も可能です。
OpenStreetMapはオープンデータとして活用でき、作成された地図は誰でも自由にダウンロードできます。
また、アカウントを作成することで誰でも簡単に地図を編集することもできます。
OpenStreetMapは、世界中の有志作業者(マッパー)が建物データや道路データを入力・編集しています。現在、マッパーは世界に190万人(日本には約1万人)存在しています。
OpenStreetMapの著作権は、OpenStreetMapと協力者を著作権表示すれば、いかなる目的でも無料で利用することができます。データを変更したり二次データを作成したりした場合も、同じライセンス条件下でのみ結果を配布できます。
Pythonで、住所から座標情報・位置情報を取得するには?
- Pythonで住所から座標情報や位置情報を取得する方法はいくつかあります。
以下は代表的な方法です:
-
国土地理院のAPIを使用する:
- 国土地理院のAPIを利用して、住所から緯度経度を取得する方法があります。
- このAPIは、住所を入力として、対応する緯度と経度の情報を返します。
-
geopyライブラリを使用する:
- geopyはPythonの地理的な計算を行うためのライブラリであり、住所から緯度経度を取得する機能を提供しています。
- APIキーやアカウントは不要で、簡単に座標情報を取得できます。
-
他のサービスのAPIを使用する:
- 例えば、Google Maps APIなど、他のサービスのジオコーディングAPIを使用して、住所から緯度経度を取得することも可能です。
- これらのサービスは通常、APIキーが必要ですが、正確かつ詳細な情報を提供します。
これらの方法を使用する際には、利用規約やAPIの使用制限を確認し、適切に対応することが重要です。
参考になる情報
位置情報(GPS)の取得の許可 ボタンを Reactで作成するには?
import React from 'react';
const LocationButton = () => {
const getLocation = () => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition, showError);
} else {
alert("Geolocation is not supported by this browser.");
}
};
const showPosition = (position) => {
console.log("Latitude: " + position.coords.latitude + " Longitude: " + position.coords.longitude);
};
const showError = (error) => {
switch(error.code) {
case error.PERMISSION_DENIED:
alert("User denied the request for Geolocation.");
break;
case error.POSITION_UNAVAILABLE:
alert("Location information is unavailable.");
break;
case error.TIMEOUT:
alert("The request to get user location timed out.");
break;
case error.UNKNOWN_ERROR:
alert("An unknown error occurred.");
break;
}
};
return <button onClick={getLocation}>Get Location</button>;
};
export default LocationButton;
ReactでGoogleMapAPIの使い方
yarn add @react-google-maps/api
yarn add @googlemaps/js-api-loader
React Component
import React, { useEffect, useState } from 'react';
import { Loader } from '@googlemaps/js-api-loader';
const GeolocationComponent = () => {
const [address, setAddress] = useState('');
useEffect(() => {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(success, handleError, options);
} else {
alert('あなたの端末では、現在位置を取得できません。');
}
function success(position) {
const { latitude, longitude } = position.coords;
const googleMapsLoader = new Loader({
apiKey: 'XXXXX', // Set your API key here
version: 'weekly',
});
googleMapsLoader.load().then(() => {
const geocoder = new google.maps.Geocoder();
const latlng = new google.maps.LatLng(latitude, longitude);
geocoder.geocode({ latLng: latlng }, (results, status) => {
if (status === google.maps.GeocoderStatus.OK) {
setAddress(results[0].formatted_address);
} else {
alert('エラー' + status);
}
});
});
}
function handleError(error) {
const errorMessage = {
0: '原因不明のエラーが発生しました。',
1: '位置情報が許可されませんでした。',
2: '位置情報が取得できませんでした。',
3: 'タイムアウトしました。',
};
alert(errorMessage[error.code]);
}
const options = {
enableHighAccuracy: false,
timeout: 10000,
maximumAge: 0,
};
}, []);
return <div id="address">{address}</div>;
};
export default GeolocationComponent;
参考・引用
React で Reafletを使用する
yarn add leaflet react-leaflet
# 型定義ファイル
yarn add -D @types/leaflet
Next.js で Leaflet を使用する
- Frontで動的に生成する。
- つまり、SSR対応できていないので、注意して使う必要がある。
Open AI の謎エラー周りのスレッド
https://api.openai.com/v1/chat/completions' エラー発生。。。🥺
OpenAI httpx.HTTPStatusError: Client error '429 Too Many Requests' for url '