구글 검색해보니
WebBrowser1->ControlInterface->ExecWB()함수를 사용하면
줌을 할 수 있다고 합니다.
예)
OleVariant pvaIn, pvaOut;
pvaIn = 150; // 150% 확대, 여기만 넣어주면 됨, 절반으로 축소는 50, 2배 확대는 200
pvaOut = NULL; // 사용 안함
WebBrowser1->ControlInterface->ExecWB(OLECMDID::OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT::OLECMDEXECOPT_DONTPROMPTUSER, pvaIn, pvaOut);
단점은,,,
가로세로 비율을 다르게 줄 수 없다는 거.
구글에서 최종으로 넘어오는 지도 그림의 크기가 640x640이군요
이 그림 크기와 WebBrowser1의 크기를 이용하면
몇배로 줌을 하면 꽉찬 화면이 될지는 계산 될 것 같습니다.
WebBrowser1의 DocumentComplete 이벤트에서
줌을 처리해 보세요.
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
WebBrowser1->Navigate(L"https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=29000x28000&maptype=roadmap&markers=color:blue%7Clabel:S%7C37.5148181,127.0617657&markers=color:green%7Clabel:G%7C37.5148181,127.06176578&markers=color:red%7Clabel:C%7C37.5148181,127.0617657&key=AIzaSyCIE7HLqaLjOmsNwSZTJ8p5yLV0k7TP-mA");
}
//---------------------------------------------------------------------------
// 줌 함수(사용자 함수)
void __fastcall TForm2::Zoom(int AZoomValue)
{
OleVariant pvaIn, pvaOut;
pvaIn = AZoomValue; // 150% 확대, 여기만 넣어주면 됨, 절반으로 축소는 50, 2배 확대는 200
pvaOut = NULL; // 사용 안함
WebBrowser1->ControlInterface->ExecWB(OLECMDID::OLECMDID_OPTICAL_ZOOM, OLECMDEXECOPT::OLECMDEXECOPT_DONTPROMPTUSER, pvaIn, pvaOut);
}
//---------------------------------------------------------------------------
void __fastcall TForm2::WebBrowser1DocumentComplete(TObject *ASender, IDispatch * const pDisp, const OleVariant &URL)
{
double ZoomValue;
// 웹브라우저 가로/세로 크기중 작은 값 얻기
int WebBrowserSize = WebBrowser1->Width < WebBrowser1->Height ? WebBrowser1->Width : WebBrowser1->Height;
// 줌 비율 구하기
ZoomValue = WebBrowserSize*100 / 640;
// 줌하기
Zoom(ZoomValue);
}
//---------------------------------------------------------------------------
*여담,
근데 이것 보다는
구글에서 지도 가져오는 링크가 최종으로 이미지로 넘어오니까
그것을 이미지 형태로 받아서 처리하면
일반 이미지처럼 스트레치가 될 것 같네요.
손재용 님이 쓰신 글 :
: 안녕하세요
:
: WebBrowser 컴포넌트에서 지도앱을 연결 시켰는데요
:
: 버튼클릭 이벤트를 활용 해서 지도맵을 확대를 하고 싶은데 이 부분좀 알려주시면 감사하겠습니다.
:
: 속성을 모르겠어서...
:
:
: Ctrl 키 + 마우스 휠에 따라서 지도 맵의 크기가 조절 되더라고요
: 이걸 할 수 있는 방법을 찾고 있는데 ctrl키 아스키 코드는 알겠는데 마우스 휠을 (이벤트) 어떻게 적용을 해야 할지 모르겠어서요
:
: 감사합니다.
: