質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

0回答

496閲覧

JsonデータからGoogleMap上にマークする

felix_0928

総合スコア1

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

0クリップ

投稿2021/08/25 10:40

概要

ReactでGoogleMapにピンを表示する可視化ツールの作成をしています。
APIを叩いて帰ってきたレスポンスデータ(JSON)データから、PINを表示させたいのですが
うまくいかず困っています。

該当のソースコード

resPoi.ts

export type resPoi ={ items: [ { id: number; lat: number; lng: number; } ]; status: string; };

response.data(Json)

{items: Array(14)} ↓ 0: { id:'1', lat:'35.6545', lng: '126.9778'} 1: { id:'2', lat:'32.9750', lng: '123.4742'} . .. ... 13:{ id:'14', ......}

GetApi.ts

typescript

1import axios from "axios"; 2import { useState, useCallback } from "react"; 3import { resPoi } from "../types/resPoi"; 4 5export const useGetApi = () => { 6 7   const [apiParams, setParams] = useState<resPoi>(); 8 9 const getApi = () =>{ 10 11 axios.get<resPoi>(`API/path`, { 12 params: params, //クエリparam 13 headers: { 14 "x-api-key": 'key', 15 } 16 17 }) 18 .then((res) => { 19 setParams(res.data); //ステートのapiParamsにres.data 20 console.log(res.data); 21 22 }) 23 .catch((error) => { 24 alert(error); 25 }) 26 } 27 28 return { apiParams, getApi } 29};

main.tsx

typescript

1 const { apiParams, getApi } = useGetApi(); 2 3 const getPlaces = useCallback (() => { 4 const places: { lat: number; lng: number}[] = []; 5 if (apiParams?.status === '') { 6 console.log(apiParams.items); 7 8 apiParams.items.map((poi) => { 9 places.push({ 10 lat: poi.lat, 11 lng: poi.lng, 12 }); 13 }); 14 } 15 return places; 16 }, [apiParams]); 17 18 return( 19 <React.StrictMode> 20 <googlemap resPoi={getplaces()} /> 21 </React.StrictMode>

googlemap.tsx

<<省略>> type point ={ lat:number; lng: number; }; type Props ={ resPoi: Array<point>; } export const Googlemap = (props: Props) => { const { resPoi } = props return( <LoadScript googleMapsApiKey={API_KEY} > <GoogleMap mapContainerStyle={containerStyle} center={center.center} zoom={center.zoom} > {/* <Marker position={position.Poi1} /> <Marker position={position.Poi2} /> */} {resPoi.map((marker: point) => ( <Marker key={`${marker.lat * marker.lng}`} position={{ lat: marker.lat, lng: marker.lng, }} /> ))} </GoogleMap> </LoadScript> ); };

試したこと

画面上にはピンが表示されず、エラーも出ないので何が原因かわからない状態です。

予想は、JSONデータをapiParamに渡せていないのではないかと思っています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問