|
|
|
|
|
마우스 커서 이동시 현재위치의 좌표를 알려고 합니다.
YEvent 에 있는 마우스관련 이벤트중 적절하게 보이는 MouseOver 를 사용해서 다음과 같이
테스트해보았는데요.
YEvent.Capture(ltsMap, EventsList.MouseOver, function(_e, _c) { YLog.print(_c.Lat + ", " + _c.Lon); if(console != null) console.log(_c); });
아무래도 잘려져있는 지도이미지위에 over 될때만 이벤트가 발생하는거 같아요.
즉, 쭉 이동하다보면 중간중간 이벤트가 들어오는거죠. 제가 필요한건 마우스 움직일때마다
바로바로 현재좌표를 알아야 되는데. MouseMove 이벤트 같은거는 어떻게 처리해야하나요?
마우스드래그를 통해 지도위에 사각형이나 원을 그리기 위해 위와같은 기능이 필요합니다.
추가로 중심좌표, 반경을 이용해 원을 그리는 API 는 없나요? 제공하는 API 가 없다면
다른방법은 없나요?
|
http://kr.blog.yahoo.com/gugi_openapi/trackback/12/69
-
거기오픈API 2008.09.12 10:28
-
말씀하신 부분은 Map과는 별도로 Window의 event를 잡아서 처리하셔야 할 것 같습니다.
답글쓰기
-
-
거기오픈API 2008.09.12 10:28
-
Window mouse이벤트를 활용하셔서 원을 그리시되, 구해진 pixel(지도 좌상단 모서리를 0,0으로 할때 x, y축으로 n pixel)로 lat, lon을 구하는 것은 지도의 MP오브젝트를 이용해서 하실 수 있습니다.
mapobject.MP.pxy_to_ll(xpixel, ypixel)
mapobject.MP.ll_to_pxy(lat,lon)
와 같이 사용하실 수 있습니다. 여기서의 xpixel은 그리니치 자오선으로부터의 해당 줌레벨에서의 pixel 거리이며, ypixel은 적도로부터의 pixel거리 입니다. 감사합니다.
답글쓰기
-
|
|
|
|
|
|
|
|
|
|
drawZoomAndCenter() 메소드를 이용할 때 파라미터로 'Address String' 을 지정할 경우
endMapDraw 이벤트가 발생합니다. 그러나, 'YGeoPoint' 값을 지정할 경우
endMapDraw 이벤트가 발생하지 않습니다.
drawZoomAndCenter() 메소드 호출 시 Waiting 메시지를 보여주고 endMapDraw 이벤트
발생 시 Waiting 메시지를 종료하고 싶은데 어떻게 하면 될까요?
|
http://kr.blog.yahoo.com/gugi_openapi/trackback/12/68
-
거기오픈API 2008.09.09 10:39
-
var des = new YGeoPoint(37.54072795155889, 126.94826602935791);
YEvent.Capture(map, EventsList.endMapDraw,myCallback);
map.drawZoomAndCenter(des , 3);
function myCallback(){
alert("A");
}
와 같이 이벤트 핸들러를 먼저 지정하고 draw하시면 됩니다. 감사합니다.
답글쓰기
-
|
|
|
|
|
|
|
|
|
|
현재, 작업중인 프로그램에 ConvertXYLatLon 메소드를 이용하여 Point 로 위도/경도 값을 구해와서 Marker 를 추가하는 기능을 넣고 있습니다. Map 영역은 Width, Height 각각 100 % 의 값을 주었습니다. (아래참고)
<html> <header> ...
<style type="text/css"> #map { width: 100%; height: 100%; } </style>
... </header> <body> <div id="map"></div> </body> </html>
이때, Resize 되어 Map 영역이 달라질 경우 ConvertXYLatLon 메소드를 이용하여 받아오는 위도/경도 값이 올바르지 않습니다. Document 를 Reload 하지 않고 이 문제를 해결할 방법이 있나요?
----------------------------------------------------------------------------------
resizeTo() 를 이용해도 동일한 문제가 발생하는 것 같습니다. 아래코드는 resizeTo() 를 이용해서 Map Area 를 변경한 후 Marker 를 추가할 때 정상적인 위치에 추가가되는지 확인을 위한 코드입니다.
<html> <head> <script type="text/javascript " src="http://kr.open.gugi.yahoo.com/Client/AjaxMap.php?v=3.7&appid=YahooDemo"></script> <style type="text/css"> #map{ height: 300px; width: 400px; } </style> </head> <body> <button onC lick="javascript :resize();">Size change</button> <div id="map"></div> <script type="text/javascript "> var map = new YMap(document.getElementById('map')); function startMap(){ map.addTypeControl(); map.addZoomLong(); map.addPanControl(); map.drawZoomAndCenter("San Francisco", 3); YEvent.Capture(map, EventsList.MouseClick, reportPosition); function reportPosition(_e, _c){ var mapCoordCenter = map.convertLatLonXY(map.getCenterLatLon()); YLog.initPos(mapCoordCenter); //call initPos to set the starting location YLog.print("You Made a MouseClick!"); YLog.print("Latitude:" + _c.Lat); YLog.print("Longitude:" + _c.Lon); YLog.print("Adding marker at...."); YLog.print("\nLatitude:" + _c.Lat + "\nLongitude:" + _c.Lon); var currentGeoPoint = new YGeoPoint( _c.Lat, _c.Lon ); map.addMarker(currentGeoPoint); } } function resize() { map.resizeTo(new YSize(700, 400)); } window.onload = startMap; </script> </body> </html>
|
http://kr.blog.yahoo.com/gugi_openapi/trackback/12/67
-
거기오픈API 2008.09.09 10:07
-
지도 크기 변경시
resizeTo(YSize) 메쏘드를 사용하여 지도 사이즈를 재설정 하거나
지도의 크기를 %가 아닌 pixel로 해보시는것은 어떨까 합니다.
감사합니다.
답글쓰기
-
-
finher78@Y 2008.09.09 20:13
-
resizeTo() 를 이용해도 ConvertXYLatLon() 에서 얻어지는 값이 올바르지 않네요. endMapDraw 이벤트 발생 시 Map Area 의 사이즈를 저장해 두었다가 Map Area 의 특정 영역의 Lat/Lon 값을 구할 경우 저장된 Map Area 사이즈와 실제 사이즈의 차를 이용하여 적용했습니다.
답글쓰기
-
-
finher78@Y 2008.09.09 20:19
-
http://kr.open.gugi.yahoo.com/document/sample/sample_07.html
에서 Browser 사이즈 변경 후 Marker 추가 시 엉뚱한 곳에 찍히는 것을 확인 할 수 있습니다.
답글쓰기
-
-
finher78@Y 2008.09.10 14:24
-
Yahoo API 3.5 까지는 정상적으로 동작하네요. 버그가 아닌가 싶습니다.
답글쓰기
-
-
거기오픈API 2008.09.10 14:36
-
관련하여 좀더 자세히 확인후 버그로 판명되면 조취 하도록 하겠습니다.
감사합니다.
답글쓰기
-
|
|
|
|
|
|
|
|
|
|
지도상에서 드래그를 하여 위치를 옮길때, 저희가 원하는 지도 범위를 제한하고 싶은경우..
어떻게 해야하는지....
방법이 있을까요?
[지도의 바운드를 잡아 놓고, 그 밖으로 못나가게 하는 방법이요...]
|
http://kr.blog.yahoo.com/gugi_openapi/trackback/12/65
-
거기오픈API 2008.09.08 10:04
-
음 우선, drag end이벤트 발생시 중심좌표 혹은 최대 최소 좌표가 원하는 바운더리를 벗어난 경우 강제 지정시키는 방법이 어떨까 합니다.
답글쓰기
-
|
|
|
|
|
|
|
|
|
|
기존 마커이미지를 사용자 이미지로 대체했는데 원하는 위치에 이미지가 표시되지 않습니다. offset 에 어떤 형식의 값을 넣어야하는지요? http://kr.open.gugi.yahoo.com/document/reference.php#YImage 여기서도 제대로 설명이 안나와서 문의드립니다. 아래 이미지 상단의 주황색 A 아이콘이 서울가든의 경,위도 값을 가지고 있습니다. 서울가든 위치에 표시되게 하고 싶습니다.
map.drawZoomAndCenter(encodeURIComponent("도화2동"), 3); var des = new YGeoPoint(37.54072795155889, 126.94826602935791); var newMarker= new YMarker(des); var new_image = new YImage(); new_image.src = 'http://www.hibori.co.kr/images/main/icon_alphabet1.png'; new_image.size=new YSize(12, 11); //new_image.offsetSmartWindow = new YCoordPoint(100,100); new_image.offset = -10; newMarker.changeImage(new_image); map.addOverlay(newMarker);

|
http://kr.blog.yahoo.com/gugi_openapi/trackback/12/64
-
거기오픈API 2008.09.02 10:29
-
안녕하세요.~~ 우선 소스 올립니다.
var new_image = new YImage();
new_image.src = 'http://www.hibori.co.kr/images/main/icon_alphabet1.png';;
new_image.size=new YSize(12, 11);
new_image.offset.x = -6;
new_image.offset.y = 6;
var newMarker= new YMarker(des,new_image);
map.addOverlay(newMarker);
답글쓰기
-
-
거기오픈API 2008.09.02 10:29
-
위에서 보시면 marker생성자에 YImage객체를 바로 사용하셔야 size가 잘 잡히게 됩니다.
offset은 image의 width, height의 절반 가량을 잡아주면 되구요...^^
답글쓰기
-
-
실무자 2008.09.03 10:08 [222.110.144.40]
-
감사합니다. 적용됐습니다. ^^
답글쓰기
-
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|