Xamarin.Forms.Maps との比較

amay077 edited this page Jul 18, 2016 · 10 revisions

Xamarin.Forms.Maps と比較して、追加された機能等について解説します。特に記載がない限り、Android / iOS のみの対応です。

目次


追加された機能

Polyline, Polygon, Circle のサポート(v1.1.0より)

共通のインターフェースで、ポリライン・ポリゴン・円を追加できます。

Polyline, Polygon, Circle supports

例えば、ポリラインの追加は以下のように行います。

// map as Xamarin.Forms.GoogleMaps.Map

var polyline = new Polyline();
polyline.Positions.Add(new Position(40.77d, -73.93d));
polyline.Positions.Add(new Position(40.81d, -73.91d));
polyline.Positions.Add(new Position(40.83d, -73.87d));

polyline.StrokeColor = Color.Blue;
polyline.StrokeWidth = 5f;
polyline.Tag = "POLYLINE"; // Can set any object

polyline.IsClickable = true;
polyline.Clicked += (s, e) => 
{
    // handle click polyline
};

map.Polylines.Add(polyline);

ラインの削除は、以下のように行います。

map.Polylines.Remove(polyline);

ポリラインとポリゴンは、 IsClickabletrue に設定すると Clicked イベントを受け取ることができます。

円には、 IsClickable プロパティと Clicked イベントはありません。これは、 Android ネイティブの Google Maps API がサポートしていないためです。

詳しくは、サンプルプログラム − XFGoogleMapSampleShapesPage.xaml.cs を参考にしてください。

制限事項

  • v1.1.0 では、Pin, Polyline, Polygon, Circle の各プロパティのバインディングはサポートしていません。

Pin の選択状態をプログラムから設定/取得(v1.0.0より)

Map.SelectedPin に表示済みの Pin を設定すると、そのピンを選択状態とし、情報ウィンドウ(InfoWindow)を表示します。 Map.SelectedPinnull を設定すると、選択状態を解除し、情報ウィンドウ(InfoWindow)を閉じます。

詳しくは、サンプルプログラム − XFGoogleMapSamplePinsPage.xaml.cs を参考にしてください。

Pin の選択イベント(v1.2.0より)

ピンが選択された時に、 Map.SelectedPinChanged が発生するようになりました。

地図上のピンのタップまたは Map.SelectedPin への設定でこのイベントが発生します。 選択が解除された場合は SelectedPinChangedEventArgs.SelectedPinnull になります。

map.SelectedPinChanged += (object sender, SelectedPinChangedEventArgs e) =>
{
    labelStatus.Text = $"SelectedPin changed - {e?.SelectedPin?.Label ?? "nothing"}";
}

Pin のカスタム画像(v1.4.0より)

マーカーの画像をカスタマイズする事ができるようになりました。

Supports custom markers

プラットフォーム固有の画像リソースを、マーカー画像として使用するには、以下のようにします。

pin.Icon = BitmapDescriptorFactory.FromBundle("image01.png");

image01.png は、 Android には Assets に "Android Asset" として、 iOS には "BundleResource" として用意しておく必要があります。

他には、 Stream をマーカーとして使用する BitmapDescriptorFactory.FromStream、既定のマーカーの色を変更する BitmapDescriptorFactory.DefaultMarker があります。

詳しくは、サンプルプログラム − XFGoogleMapSampleCustomPinsPage.xaml.cs を参考にしてください。

注意事項

同じサイズの画像でも iOS の方が大きく描画されるようです。これについての意見は issue #40 で受け付けています。

カスタムタイルのサポート(v1.3.0より)

Map.TileLayersTileLayer オブジェクトを追加すると、Googleマップ以外の背景地図を表示できます。

Custom tile supports

例えば、地理院地図 の背景地図を使用するには、以下のようにします。

var tileLayer = TileLayer.FromTileUri((int x, int y, int zoom) => 
    new Uri($"https://cyberjapandata.gsi.go.jp/xyz/std/{zoom}/{x}/{y}.png")
);
map.TileLayers.Add(tileLayer);

地図タイルのURLではなく、画像そのものを返したい場合は TileLayer.FromSyncImage または TileLayer.FromAsyncImage を使用します。

詳しくは、サンプルプログラム − XFGoogleMapSampleTilesPage.xaml.cs を参考にしてください。

変更された機能

Map.MoveToRegion の引数に bool animate を追加(v1.1.0より)(Android / iOS / UWP 対応)

animatetrue に設定すると、移動時にアニメーションします。 false を設定するとアニメーションせずに即座に移動します。この引数は省略可能であり、省略時は true になります。

削除された機能

  • なし(v1.1.0 現在)
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.