MapContainer.js
2.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*global kakao*/
import React, { Component, useCallback } from "react";
import styled from "styled-components";
const { kakao } = window;
var nowlat, nowlon;
class MapContainer extends Component {
constructor(props) {
super(props);
this.state = {
isLoading: true,
lat: 37.506502,
lon: 127.053617,
};
this.getLocation = this.getLocation.bind(this);
this.getMap = this.getMap.bind(this);
this.componentDidMount = this.componentDidMount.bind(this);
}
sleep = (ms) => {
return new Promise((resolve) => setTimeout(resolve, ms));
};
getLocation = (callback) => {
if (navigator.geolocation) {
// GeoLocation을 이용해서 접속 위치를 얻어옵니다
navigator.geolocation.getCurrentPosition(function (position) {
nowlat = position.coords.latitude; // 위도
nowlon = position.coords.longitude; // 경도
console.log(nowlat, nowlon);
var locPosition = new kakao.maps.LatLng(nowlat, nowlon); // 마커가 표시될 위치를 geolocation으로 얻어온 좌표로 생성합니다
//message = '<div style="padding:5px;">여기에 계신가요?!</div>'; // 인포윈도우에 표시될 내용입니다
// 마커와 인포윈도우를 표시합니다
//displayMarker(locPosition, message);
callback();
//return locPosition;
});
} else {
// HTML5의 GeoLocation을 사용할 수 없을때 마
nowlat = 37.506502; // 위도
nowlon = 127.053617; // 경도커 표시 위치와 인포윈도우 내용을 설정합니다
var locPosition = new kakao.maps.LatLng(37.506502, 127.053617);
//message = "geolocation을 사용할수 없어요..";
//displayMarker(locPosition, message);
callback();
}
};
getMap = () => {
this.getLocation(() => {
this.setState({ lat: nowlat, lon: nowlon });
let container = document.getElementById("Mymap");
let options = {
center: new kakao.maps.LatLng(this.state.lat, this.state.lon),
level: 7,
};
const map = new window.kakao.maps.Map(container, options);
});
};
componentDidMount() {
this.getMap();
}
render() {
return <MapContents id="Mymap"></MapContents>; // 이부분이 지도를 띄우게 될 부분.
}
}
const MapContents = styled.div`
width: 500px;
height: 400px;
`;
export default MapContainer;