おもちゃプロジェクト
토이프로젝트(3)- 주변 맛집
차가리
2021. 11. 22. 21:42
728x90
오늘은 좀 수정을 했다. 내가 생각한 것은 처음 입장시 자기 주변 맛집을 찾아주는 거였다.
그래서 오늘은 입장시 바로 자기 위치를 찾아서 화면 띄워주는것 까지 해볼것이다. 일단 카카오 api는 좋다.
먼저 전체 코드이다.
<template>
<v-container>
<v-row>
<v-col>
<input type="text" id="keyword" value="이태원 맛집" placeholder="sad"/>
<v-btn @click="initMap">dasfd</v-btn>
</v-col>
</v-row>
<v-row justify="center">
<v-col cols="10">
<v-sheet min-height="20vh" rounded="lg">
</v-sheet>
</v-col>
</v-row>
<v-row justify="center">
<v-col cols="10" >
<v-sheet min-height="70vh" rounded="lg">
<!-- -->
<div id="map" style="min-height:70vh;"></div>
</v-sheet>
</v-col>
</v-row>
</v-container>
</template>
<script>
// import axios from 'axios'
export default {
data: () => ({
keyWord: ''
}),
mounted () {
// window 글로벌 객체 kakao 객체가 존재 && 카카오.맵 객체 존재?
if (window.kakao && window.kakao.maps) {
this.initMap()// 존재하면 initMap()실행
} else { // 존재 하지 않으면 script에 kakao스크립트를 헤드에 넣는 것을 함
const script = document.createElement('script')
/* global kakao */
script.onload = () => kakao.maps.load(this.initMap)
script.src = '//dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=내 앱키&libraries=services,clusterer,drawing'
document.head.appendChild(script)
}
},
methods: {
// 현재 위치에서 주변 맛집을 표현해야함
initMap () {
const container = document.getElementById('map')
const option = {
center: new kakao.maps.LatLng(33.450701, 126.570667),
level: 10
}
const map = new kakao.maps.Map(container, option)
// HTML5의 지오로케이션으로 사용할 수 있는 지 확인
if (navigator.geolocation) {
// GeoLocation을 이용해서 접속 위치를 얻어옴
navigator.geolocation.getCurrentPosition(function (position) {
const lat = position.coords.latitude // 위도
const lon = position.coords.longitude // 경도
const locPosition = new kakao.maps.LatLng(lat, lon)
const message = '<div style="padding:5px;">여기에 계신가요?</div>' // 인포윈도우에 표시될 내용
// 마커와 인포윈도우를 표시한다.
displayMarker(locPosition, message)
})
} else {
var locPostion = new kakao.maps.LatLng(33.450701, 126.570667)
var message = '현재위치를 찾을 수 없습니다.'
displayMarker(locPostion, message)
}
// 지도에 마커와 인포윈도우를 표시하는 함수
function displayMarker (locPosition, message) {
const marker = new kakao.maps.Marker({
map: map,
position: locPosition
})
const iwContent = message // 인포윈도우에 표시할 내용
const iwRemovaable = true
// 인포 윈도우 생성
var infowindow = new kakao.maps.InfoWindow({
content: iwContent,
removavle: iwRemovaable
})
infowindow.open(map, marker)
map.setCenter(locPosition)
}
}
}
}
</script>
먼저 하나 하나 보겠다.
html 부분은 볼게 없다. 그냥 div하나에다가 박아넣어 놓기만 하면 된다.
js부분
<script>
// import axios from 'axios'
export default {
data: () => ({
keyWord: ''
}),
mounted () {
// window 글로벌 객체 kakao 객체가 존재 && 카카오.맵 객체 존재?
if (window.kakao && window.kakao.maps) {
this.initMap()// 존재하면 initMap()실행
} else { // 존재 하지 않으면 script에 kakao스크립트를 헤드에 넣는 것을 함
const script = document.createElement('script')
/* global kakao */
script.onload = () => kakao.maps.load(this.initMap)
script.src = '//dapi.kakao.com/v2/maps/sdk.js?autoload=false&appkey=내 앱키&libraries=services'
document.head.appendChild(script)
}
},
methods: {
// 현재 위치에서 주변 맛집을 표현해야함
initMap () {
const container = document.getElementById('map')
const option = {
center: new kakao.maps.LatLng(33.450701, 126.570667),
level: 10
}
const map = new kakao.maps.Map(container, option)
// HTML5의 지오로케이션으로 사용할 수 있는 지 확인
if (navigator.geolocation) {
// GeoLocation을 이용해서 접속 위치를 얻어옴
navigator.geolocation.getCurrentPosition(function (position) {
const lat = position.coords.latitude // 위도
const lon = position.coords.longitude // 경도
const locPosition = new kakao.maps.LatLng(lat, lon)
const message = '<div style="padding:5px;">여기에 계신가요?</div>' // 인포윈도우에 표시될 내용
// 마커와 인포윈도우를 표시한다.
displayMarker(locPosition, message)
})
} else {
var locPostion = new kakao.maps.LatLng(33.450701, 126.570667)
var message = '현재위치를 찾을 수 없습니다.'
displayMarker(locPostion, message)
}
// 지도에 마커와 인포윈도우를 표시하는 함수
function displayMarker (locPosition, message) {
const marker = new kakao.maps.Marker({
map: map,
position: locPosition
})
const iwContent = message // 인포윈도우에 표시할 내용
const iwRemovaable = true
// 인포 윈도우 생성
var infowindow = new kakao.maps.InfoWindow({
content: iwContent,
removavle: iwRemovaable
})
infowindow.open(map, marker)
map.setCenter(locPosition)
}
}
}
}
</script>
728x90