2017-10-24 2 views
0

내 PCL 앱의 핵심 프로젝트에서 생성 된 다른 활동 또는 페이지로 이동해야하는 경우가 있습니다. 확인한 모든 샘플은 URI를 사용하여 웹 사이트로 연결됩니다. 아래 코드에서 핀을 클릭 할 때 내 앱의 다른 페이지로 이동할 수 있도록 변경해야하는 항목은 무엇입니까?Xamarin Form 사용자 정의지도 - 내 앱에서 다른 페이지로 이동할 수 없습니다.

public class CustomMapRenderer : MapRenderer, GoogleMap.IInfoWindowAdapter 
{ 
    ... 

    void OnInfoWindowClick(object sender, GoogleMap.InfoWindowClickEventArgs e) 
    { 
     var url = Android.Net.Uri.Parse(customPin.Url); 
     var intent = new Intent(Intent.ActionView, url); 
     intent.AddFlags(ActivityFlags.NewTask); 
     Android.App.Application.Context.StartActivity(intent); 
    } 
} 
+0

"어떤 코드를 변경해야합니까?" 작동하지 않는 것이 있습니까? 뭐? 무슨 일이 일어나야하고 실제로 무엇을해야합니까? 왜 당신이 그들과 관련이 없어도 Google지도로 질문에 태그를 추가 했습니까? –

답변

0

일반적으로 PCL에서 사용자 지정지도를 다시 호출하고 탐색을 처리하도록합니다.

나는 그것이 것입니다 할 방법 :

1) 호출 될 사용자 정의지도에 공개 방법을 추가 사용자 지정지도

public static readonly BindableProperty MapClickedCommandProperty = BindableProperty.Create(
     nameof(MapClickedCommand), 
     typeof(ICommand), 
     typeof(CustomMap)); 

    public ICommand MapClickedCommand 
    { 
     get { return (ICommand)GetValue(MapClickedCommandProperty); } 
     set { SetValue(MapClickedCommandProperty, value); } 
    } 

2)에 입력 ICommand의의 바인딩 속성을 추가 귀하의 사용자 정의 렌더러에서 사용자 정의 렌더러

public void RaiseMapClicked(Url url) 
{ 
    MapClickedCommand?.Execute(url); 
} 

3)에 의해 공개 방법

전화 OnInfoWindowClick
var url = Android.Net.Uri.Parse(customPin.Url); 
var formsMap = Element as CustomMap; 
formsMap.RaiseMapClicked(url); 

이렇게하면 명령을 사용자 지정 맵에 바인딩하고보기 모델에서 URL을 처리 할 수 ​​있습니다.