Nuxt.js에서 Google Places API 결과를 Google Map에 반영
14012 단어 nuxt.jsGoogleMapsAPI
개요
Nuxt.js에서 현재 위치의 Google Map을 표시한 후 Google Places API에서 다양한 상점 정보를 반영하는 구현 예제를 제공합니다.
참고로 한 것 및 유의점
샘플 소스
MapComponent.vue
<template>
<div>
<GmapMap
:center="maplocation"
:zoom="15"
:draggable="true"
map-type-id="roadmap"
style="width: 500px; height: 300px"
ref="mapRef"
>
<GmapMarker v-for="m in makers"
:position="m.position"
:title="m.title"
:clickable="true"
:draggable="false"
:icon="m.icon"
:key="m.id">
</GmapMarker>
</GmapMap>
</div>
</template>
<script>
export default {
data() {
return {
maplocation:{lat:0, lng:0},
makers:[]
}
},
async mounted() {
// 現在地の取得
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(
function(position){
let coords = position.coords;
// 緯度経度を取得
this.maplocation.lat = coords.latitude;
this.maplocation.lng = coords.longitude;
// 地図読み込み完了時のイベント
this.$gmapApiPromiseLazy().then(() => {
google.maps.event.addListenerOnce(this.$refs.mapRef.$mapObject, 'idle',
function() { this.setPlaceMakers() }.bind(this)
);
});
}.bind(this),
function(error) {
// エラーの場合は東京駅周辺に移動
this.maplocation.lat = 35.6813092;
this.maplocation.lng = 139.7677269;
}
);
} else {
// 現在地取得不可の場合は東京駅周辺に移動
this.maplocation.lat = 35.6813092;
this.maplocation.lng = 139.7677269;
}
},
methods: {
setPlaceMakers() {
let map = this.$refs.mapRef.$mapObject
let placeService = new google.maps.places.PlacesService(map);
// Places APIのnearbySearchを使用する。
placeService.nearbySearch(
{
location: new google.maps.LatLng(this.maplocation.lat, this.maplocation.lng),
radius: 500,
type: ['restaurant']
},
function(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
results.forEach(place => {
// デフォルトのアイコンが大きめなので縮小
let icon = {
url: place.icon, // url
scaledSize: new google.maps.Size(30, 30), // scaled size
origin: new google.maps.Point(0,0), // origin
anchor: new google.maps.Point(0, 0) // anchor
};
let maker = {
position: place.geometry.location,
icon: icon,
title: place.name,
id: place.place_id
};
this.makers.push(maker);
});
}
}.bind(this)
);
}
}
}
</script>
화면 표시
API 획득이 성공하면 아래와 같은 느낌으로 Map이 표시됩니다.
Reference
이 문제에 관하여(Nuxt.js에서 Google Places API 결과를 Google Map에 반영), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/someone7140/items/ca70aab62dc039836b4c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)