구글 링크 주소에서 넘어오는 지도 이미지를 받아서
Image콤포넌트에 넣는 것을 간단하게 만들어 봤습니다.
웹브라우저보다 이렇게 하는 것이 더 좋은 방법 같네요.
1. NetHTTPClient 콤포넌트를 메인 폼에 추가합니다.
2. Image콤포넌트를 메인 폼에 추가하고, Stretch = true로 합니다
2. 메인폼 소스 상단에 아래와 같이 헤더를 추가합니다.
#include <vcl.h>
#include <Vcl.Imaging.pngimage.hpp> //요것 추가, 구글 지도 이미지(PNG이미지) 처리를 위해
#pragma hdrstop
3. 지도를 불러와서 이미지에 넣기
TMemoryStream *MS = new TMemoryStream;
TPngImage *PNG = new TPngImage;
String URL;
try {
URL = 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";
NetHTTPClient1->Get(URL, MS); //URL에서 넘어오는 지도이미지를 스트림에 넣기
MS->Seek(0, soFromBeginning); //스트림 메모리 처음으로 이동
PNG->LoadFromStream(MS); //스트림 메모리를 PNG이미지로
Image1->Picture->Assign(PNG); //PNG이미지를 Image에 넣기
}
__finally
{
delete PNG;
delete MS;
}
손재용 님이 쓰신 글 :
: 안녕하세요 구룡중1 학년 손재용이라고 합니다.
: 구글지도 활용한 프로젝트를 만들고 있는데요
:
: WebBrowser1->Navigate("
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")
:
: 이런식으로 해서 위도경도 좌표로 진행을 하는데요.
:
: 문제 점> WebBrowser1 컴포넌트에서 지도가 작게 나오서요 ?
: 다른(Image1) 컴포넌트처럼 autosize 속성이 있어서 true로 하면 그림 Image1컴포넌트 크기에 그림이 맞추어져 나오는 것처럼
: WebBrowser1도 지도가 꽉차게 나오게 하려면 어떻게 해야 할지 좀 알려주시면 감사하겠습니다.
:
: 실시간 모니터링 프로젝트를 만드는 중 이부분이 안되서
:
: 감사합니다.