1. 네이버 지도 API 키 발급 받기
http://developer.naver.com/wiki/pages/MapAPI 로 들어가 [키 발급/관리]를 클릭한다.
코딩할 때는 JavaScript 2.0 지도 시작하기를 참고 하면 된다.
[키 추가] 버튼을 눌러 키를 발급화면으로 이동한다.
[?] 버튼을 눌러 디렉토리 제한에 관한 설명을 숙지하고, 양식을 작성하고 키를 발급 받는다.
2. 코딩하기 – 마커 및 라벨 추가하기
아래는 보통 회사 위치를 안내하는 페이지 이다.
네이버맵을 페이지에 내장시키고, 맵 위에 회사 위치에 마커를 찍어주고, 라벨에 회사명을 적어 주었다.
마커 옆에 긴 네모가 라벨이다.
JavaScript 2.0 지도 시작하기에 다 나와 있다. 아마 수십분만 투자해도 활용할 수 있을 것이다.
그런데 “샘플 파일 다운로드” 링크가 깨져있어서, 소스를 복사 붙여넣기 해야 하는데,
붙여넣기 하면 소스가 한줄로 쭉 나와서, 소스 정리 하는 시간이 좀 걸린다. 좀 짜증…
여튼 아래 소스는 1. 사용 예제를 기반으로 작성한 것이다.
주석을 약간 붙였다.
안쓰는 기능은 다 주석(/**/) 처리를 했다.
위 그림과 같이 나오게 하려면, 굵게 표시한 부분만 고쳐서 쓰면 된다.
위도/경도(Lat, Lng)는 각자에 맞게 찾아야 하는데, 네이버맵을 통해 어찌저찌 알아내면 된다.
안되면 구글맵을 통해 알아내도 되고, 다음맵을 통해 알아내도 될 것이다.
(주소를 가지고 있으면 쉽게 알아낼 수 있을 것이다.)
<!-- 네이버 맵 -->
<!-- prevent IE6 flickering -->
<script type="text/javascript">
try {
document.execCommand('BackgroundImageCache', false, true);
}
catch(e) {
}
</script>
<script type="text/javascript" src="http://openapi.map.naver.com/openapi/naverMap.naver?ver=2.0&key=여기에발급받은키를입력한다."></script>
<div id="map" style="border:1px solid #000;"></div>
<script type="text/javascript">
var Lat = 37.0000000;
var Lng = 126.0000000;
// 위도/경도
var oSeoulCityPoint = new nhn.api.map.LatLng(Lat, Lng);
// 줌레벨
var defaultLevel = 12;
// 맵 생성
var oMap = new nhn.api.map.Map(document.getElementById('map'), {
point : oSeoulCityPoint,
zoom : defaultLevel,
enableWheelZoom : true,
enableDragPan : true,
enableDblClickZoom : false,
mapMode : 0,
activateTrafficMap : false,
activateBicycleMap : false,
minMaxLevel : [ 1, 14 ],
size : new nhn.api.map.Size(900, 480)
});
// 줌 컨트롤
var oSlider = new nhn.api.map.ZoomControl();
oMap.addControl(oSlider);
oSlider.setPosition({
top : 10,
left : 10
});
// 일반/위성 버튼
var oMapTypeBtn = new nhn.api.map.MapTypeBtn();
oMap.addControl(oMapTypeBtn);
oMapTypeBtn.setPosition({
bottom : 10,
right : 80
});
// 주제별 지도 버튼
/*var oThemeMapBtn = new nhn.api.map.ThemeMapBtn();
oThemeMapBtn.setPosition({
bottom : 10,
right : 10
});
oMap.addControl(oThemeMapBtn);*/
// 자전거 지도 범례 컨트롤
/*var oBicycleGuide = new nhn.api.map.BicycleGuide(); // - 자전거 범례 선언
oBicycleGuide.setPosition({
top : 10,
right : 10
}); // - 자전거 범례 위치 지정
oMap.addControl(oBicycleGuide);// - 자전거 범례를 지도에 추가. */
// 교통범례 컨트롤
/*var oTrafficGuide = new nhn.api.map.TrafficGuide(); // - 교통 범례 선언
oTrafficGuide.setPosition({
bottom : 30,
left : 10
}); // - 교통 범례 위치 지정.
oMap.addControl(oTrafficGuide); // - 교통 범례를 지도에 추가.*/
// 실시간 교통 버튼
/*var trafficButton = new nhn.api.map.TrafficMapBtn(); // - 실시간 교통지도 버튼 선언
trafficButton.setPosition({
bottom:10,
right:150
}); // - 실시간 교통지도 버튼 위치 지정
oMap.addControl(trafficButton);*/
// 마커 아이콘(안보이는 상태로 맵에 추가해 놓기)
var oSize = new nhn.api.map.Size(28, 37);
var oOffset = new nhn.api.map.Size(14, 37);
var oIcon = new nhn.api.map.Icon('http://static.naver.com/maps2/icons/pin_spot2.png', oSize, oOffset);
// 정보상자(안보이는 상태로 맵에 추가해 놓기)
var oInfoWnd = new nhn.api.map.InfoWindow();
oInfoWnd.setVisible(false);
oMap.addOverlay(oInfoWnd);
oInfoWnd.setPosition({
top : 20,
left :20
});
// 마커라벨(안보이는 상태로 맵에 추가해 놓기)
var oLabel = new nhn.api.map.MarkerLabel(); // - 마커 라벨 선언.
oMap.addOverlay(oLabel); // - 마커 라벨 지도에 추가. 기본은 라벨이 보이지 않는 상태로 추가됨.
oInfoWnd.attach('changeVisible', function(oCustomEvent) {
if (oCustomEvent.visible) {
oLabel.setVisible(false);
}
});
/*
// 폴리곤 객체 선언(안보이는 상태로 맵에 추가해 놓기)
var oPolyline = new nhn.api.map.Polyline([], {
strokeColor : '#f00', // - 선의 색깔
strokeWidth : 5, // - 선의 두께
strokeOpacity : 0.5 // - 선의 투명도
}); // - polyline 선언, 첫번째 인자는 선이 그려질 점의 위치. 현재는 없음.
oMap.addOverlay(oPolyline); // - 지도에 선을 추가함.
oMap.attach('mouseenter', function(oCustomEvent) {
var oTarget = oCustomEvent.target;
// 마커위에 마우스 올라간거면
if (oTarget instanceof nhn.api.map.Marker) {
var oMarker = oTarget;
oLabel.setVisible(true, oMarker); // - 특정 마커를 지정하여 해당 마커의 title을 보여준다.
}
});
oMap.attach('mouseleave', function(oCustomEvent) {
var oTarget = oCustomEvent.target;
// 마커위에서 마우스 나간거면
if (oTarget instanceof nhn.api.map.Marker) {
oLabel.setVisible(false);
}
});
oMap.attach('click', function(oCustomEvent) {
var oPoint = oCustomEvent.point;
var oTarget = oCustomEvent.target;
oInfoWnd.setVisible(false);
// 마커 클릭하면
if (oTarget instanceof nhn.api.map.Marker) {
// 겹침 마커 클릭한거면
if (oCustomEvent.clickCoveredMarker) {
return;
}
// - InfoWindow 에 들어갈 내용은 setContent 로 자유롭게 넣을 수 있습니다. 외부 css를 이용할 수 있으며,
// - 외부 css에 선언된 class를 이용하면 해당 class의 스타일을 바로 적용할 수 있습니다.
// - 단, DIV 의 position style 은 absolute 가 되면 안되며,
// - absolute 의 경우 autoPosition 이 동작하지 않습니다.
oInfoWnd.setContent('<DIV style="border-top:1px solid; border-bottom:2px groove black; border-left:1px solid; border-right:2px groove black;margin-bottom:1px;color:black;background-color:white; width:auto; height:auto;">'+
'<span style="color: #000000 !important;display: inline-block;font-size: 12px !important;font-weight: bold !important;letter-spacing: -1px !important;white-space: nowrap !important; padding: 2px 5px 2px 2px !important">' +
'Hello World <br /> ' + oTarget.getPoint()
+'<span></div>');
oInfoWnd.setPoint(oTarget.getPoint());
oInfoWnd.setPosition({right : 15, top : 30});
oInfoWnd.setVisible(true);
oInfoWnd.autoPosition();
return;
}
var oMarker = new nhn.api.map.Marker(oIcon, { title : '마커 : ' + oPoint.toString() });
oMarker.setPoint(oPoint);
oMap.addOverlay(oMarker);
var aPoints = oPolyline.getPoints(); // - 현재 폴리라인을 이루는 점을 가져와서 배열에 저장.
aPoints.push(oPoint); // - 추가하고자 하는 점을 추가하여 배열로 저장함.
oPolyline.setPoints(aPoints); // - 해당 폴리라인에 배열에 저장된 점을 추가함
});
*/
// 마커 직접추가
var oMarker = new nhn.api.map.Marker(oIcon, { title : '회사명' });
oMarker.setPoint(oSeoulCityPoint);
oMap.addOverlay(oMarker);
oLabel.setVisible(true, oMarker);
// 정보상자 직접추가
/*
oInfoWnd.setContent('<DIV style="border-top:1px solid; border-bottom:2px groove black; border-left:1px solid; border-right:2px groove black;margin-bottom:1px;color:black;background-color:white; width:auto; height:auto;">'+
'<span style="color: #000000 !important;display: inline-block;font-size: 12px !important;font-weight: bold !important;letter-spacing: -1px !important;white-space: nowrap !important; padding: 2px 5px 2px 2px !important">' +
'Hello World <br /> '
+'<span></div>');
oInfoWnd.setPoint(oMarker.getPoint());
oInfoWnd.setPosition({right : 15, top : 30});
oInfoWnd.setVisible(true);
oInfoWnd.autoPosition();
*/
</script>
디렉토리
생성 : $ mkdir xxx (현재 디렉토리 하위에 xxx 디렉토리를 생성함)
변경 : $ mv xxx yyy (xxx 디렉토리명을 yyy로 변경함)
tar
압축하기 : $ tar cvfzp xxx.tar.gz * (모든파일을 xxx.tar.gz 로 압축, 하위폴더 포함)
특정폴더 제외 옵션 : $ tar cvfzp xxx.tar.gz * --exclude abc
(abc 폴더를 제외하고, 모든파일을 xxx.tar.gz 로 압축, 하위폴더 포함)
압축풀기 : $ tar xvfzp xxx.tar.gz (현재 디렉토리에 풀림)
$ tar xvfzp xxx.tar.gz -C ./yyy (현재 디렉토리 하위에 있는 yyy 디렉토리에 풀림)
디렉토리는 먼서 생성되어 있어야 함.
zip
먼저 unzip이라는 패키지가 설치되어 있어야 합니다.
unzip 패키지가 없으면 apt-get install unzip 을 통해서 설치하세요.
압축하기 : $ zip -r xxx.zip * (모든파일을 xxx.zip 으로 압축, 하위폴더 포함)
압축풀기 : $ unzip xxx.zip (현재 디렉토리에 풀림)
$ unzip xxx.zip -d ./yyy (현재 디렉토리 하위에 있는 yyy 디렉토리에 풀림)
디렉토리는 먼서 생성되어 있어야 함.
'PHP > Linux' 카테고리의 다른 글
리눅스 쉘 클라이언트 putty (0) | 2014.04.04 |
---|---|
리눅스 FTP 접속 및 파일전송(다운로드) (0) | 2014.04.04 |
<?
$m_bo_table = 'news';
$m_rows = "5";
$m_subject_len = 20;
$m_latest_skin_path = "$g4[path]/skin/latest/basic";
$list = array();
$sql = " select * from $g4[board_table] where bo_table = '$m_bo_table'";
$board = sql_fetch($sql);
//echo "$sql<br />";
$tmp_write_table = $g4['write_prefix'] . $m_bo_table; // 게시판 테이블 전체이름
//$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_id desc limit 0, $m_rows ";
// 위의 코드 보다 속도가 빠름
$sql = " select * from $tmp_write_table where wr_is_comment = 0 order by wr_num limit 0, $m_rows ";
//echo "$sql<br />";
//explain($sql);
$result = sql_query($sql);
for ($i=0; $row = sql_fetch_array($result); $i++)
$list[$i] = get_list($row, $board, $m_latest_skin_path, $m_subject_len);
?>
<? for ($i=0; $i<count($list); $i++) { ?>
<? echo "<img src='$m_latest_skin_path/img/latest_icon.gif' align=absmiddle>"; ?>
<?
// 파일 출력
/*
for ($j=0; $j<=count($list[$i][file]); $j++) {
if ($list[$i][file][$j][view])
echo $list[$i][file][$j][view] . "<p>";
}
*/
if ($list[$i][file][0][view])
echo "<img src='$g4[path]/data/file/$m_bo_table/{$list[$i][file][0][file]}' align='absmiddle' width='100' height='60' />";
?>
<?
echo $list[$i]['icon_reply'] . " ";
echo "<a href='{$list[$i]['href']}'>";
if ($list[$i]['is_notice'])
echo "<font style='font-family:돋움; font-size:9pt; color:#2C88B9;'><strong>{$list[$i]['subject']}</strong></font>";
else
echo "<font style='font-family:돋움; font-size:9pt; color:#6A6A6A;'>{$list[$i]['subject']}</font>";
echo "</a>";
if ($list[$i]['comment_cnt'])
echo " <a href=\"{$list[$i]['comment_href']}\"><span style='font-family:돋움; font-size:8pt; color:#9A9A9A;'>{$list[$i]['comment_cnt']}</span></a>";
// if ($list[$i]['link']['count']) { echo "[{$list[$i]['link']['count']}]"; }
// if ($list[$i]['file']['count']) { echo "<{$list[$i]['file']['count']}>"; }
echo " " . $list[$i]['icon_new'];
echo " " . $list[$i]['icon_file'];
echo " " . $list[$i]['icon_link'];
echo " " . $list[$i]['icon_hot'];
echo " " . $list[$i]['icon_secret'];
echo "<br />";
?>
<? } ?>
<? if (count($list) == 0) { ?><tr><td colspan=4 align=center height=50><font color=#6A6A6A>게시물이 없습니다.</a></td></tr><? } ?>
'PHP > 그누보드' 카테고리의 다른 글
IIS + PHP에서 그누보드5 설치하기 / 윈도우즈에서 그누보드5 설치하기 / 경로문제 해결 (2) | 2015.06.25 |
---|---|
그누보드4 이전하기 - 다른 서버로 이전하기 (2) | 2014.04.04 |
그누보드4 확장하기 - 최신 글 목록 섬네일 latest.skin.php (0) | 2014.01.07 |
그누보드4 - 기본환경설정 여분필드 활용하기 (0) | 2014.01.06 |
그누보드4 확장하기 - 글수정시 이미지 첨부파일 보이게 하기 (0) | 2013.12.27 |