Xamarin.iOS Maps Static API를 이용한 지도 이미지 생성
무슨 느낌인가 하면,
핀을 세우고 싶은 위치에 조준을 맞추고,
확정 버튼 뭔가를 탭하면,
조준을 맞춘 곳에 핀이 단 이미지가 생성된다는 느낌.
구현
1. 표시된 GoogleMap의 중심 좌표를 전달합니다.
CGPoint point = Mapview.Center;
Mapview.Projection.CoordinateForPoint(point);
2.Maps Static API에 GoogleMap의 중심 좌표의
Latitude
와 Longitude
string url = Uri.EscapeUriString("https://maps.google.com/maps/api/staticmap?markers=color:red|" + $"{lat},{lng}" + "&zoom=16&size=" + 207 + "x" + $"{Math.Floor(this.screenShotViewWitdh)}" + "&sensor=true");
NSUrl googlmapsStaticMapApi = new NSUrl(url);
3.NSData.FromUrl을 사용하여 이미지 데이터를 얻습니다.
return UIImage.LoadFromData(NSData.FromUrl(googlmapsStaticMapApi));
4. 이전 화면에 이미지 데이터 전달
public override void ViewWillDisappear(bool animated)
{
base.ViewWillDisappear(animated);
if(IsMovingFromParentViewController){
var parentVc = NavigationController.ChildViewControllers;
//HACK: コントローラー名でなおかつそのコントローラーが生きている状態という条件にした方が良さそう
var childvc = ParentViewController.ChildViewControllers[1] as UpLoadDataViewController;
childvc.setMapImage(MakeStaticGoogleMap());
childvc.setLatLng(lat, lng);
}
}
5. 건너온 이미지 데이터를 ImageView에 넣습니다.
public async override void ViewDidAppear(bool animated)
{
base.ViewDidAppear(animated);
if (map != null)
{
StreetAddressImageView.Image = map;
}
if (shop != null)
{
//未実装
}
}
이미지 생성 부분 전체
public UIImage MakeStaticGoogleMap(){
CGPoint point = Mapview.Center;
CLLocationCoordinate2D coordinate2D = Mapview.Projection.CoordinateForPoint(point);
lat = coordinate2D.Latitude;
lng = coordinate2D.Longitude;
string url = Uri.EscapeUriString("https://maps.google.com/maps/api/staticmap?markers=color:red|" + $"{lat},{lng}" + "&zoom=16&size=" + 207 + "x" + $"{Math.Floor(this.screenShotViewWitdh)}" + "&sensor=true"); //$"{Math.Floor(this.screenShotViewHeight)}"
NSUrl googlmapsStaticMapApi = new NSUrl(url);
return UIImage.LoadFromData(NSData.FromUrl(googlmapsStaticMapApi));
}
StackOverFlow의 어딘가에 있던 질문을 보고 했습니다만 잊어 버렸기 때문에 생각나면 붙여 둡니다. .
Reference
이 문제에 관하여(Xamarin.iOS Maps Static API를 이용한 지도 이미지 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/steelhearts/items/a847f18db521e3854d07텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)