WP 8の地図とナビゲーション

36481 ワード

原文WP 8の地図とナビゲーション
 
コードの例
ソースファイル:
 
Media:MapSample.zip
テストベース
SDK: Windows Phone SDK 8.0
互換性
プラットフォーム:Windows Phone 8 and later
Windows Phone 8
文章
から
 
Xinx Gong
30 Nov 2012で作成
最後に
 
hamishwillee
26 Jun 2013で編集
 

Contents


1地図コントロール
1.1地図表示
1.2地図の中心点と拡大・縮小比を指定する
1.3用Map.SetViewダイナミック調整マップ
1.4地図作成モード
1.5地図色モード
1.6ランドマークと歩行者の特性を表示する

2地図サービス
2.1緯度によるアドレス情報の検索
2.2ある場所の経緯を探す
2.3路線計画

3オフラインマップ管理
4サンプルコードダウンロード
 

マップコントロール


 
WP 8では,新しいMapAPIsを用いて地図ベースのアプリケーションを開発することができ,位置や検索機能を含めることができる.WP 8で使用するのはノキア地図、WP 7である.1の中のBing地図は依然としてサポートされているが、使用は推奨されず、すでにBing地図を使用するWP 7と互換性のために使用されているだけである.1アプリケーション.
 

地図を表示


 
WP 8ではMapコントロールを使用して地図を表示します.使用する前に、次のことに注目する必要があります.
 
1.Mapコントロールとサービスで使用するnamespace
 
Microsoft.Phone.Map


 
2.XAMLファイルでMapコントロールを使用するために必要なxmlns宣言
 
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"


 
3.WMAppManifest.xmlにID_を追加する必要がありますCAP_MAP機能
 

地図の中心点とスケール比を指定します。


 
Mapコントロールを初期化すると、CenterChangedとZoomLevelChangedイベントが一度トリガーされますので、Mapコントロールの初期化でこの2つのイベントがトリガーされたときにコードが正しく処理されていることを確認します.注意LatitudeプロパティとLongitudeプロパティでCenterを設定しないでください.GeoCoordinateオブジェクトを作成して設定する必要があります.
 

MapでSetViewダイナミック調整マップ


 
Mapのプロパティを直接設定して地図を調整すると、地図の変化が非常に硬くなり、SetViewで地図を調整すると、スムーズなアニメーション効果で地図の変化を示すことができます.
 
次のプロパティは、SetViewメソッドで調整できます.
 
GeoCoordinate center: 

double zoomLevel: 

double heading: , 0-360 。



double pitch: , 0-180 。



LocationRectangle boundingRectangle: 。

MapAnimationKind animationKind: 。


 

マップパターン


 
MapCartographicMode.Road:  2D ( )。

MapCartographicMode.Aerial:  。

MapCartographicMode.Hybrid:  。

MapCartographicMode.Terrain:  3D , , 。




 

マップカラーモード


 
MapColorMode.Light: 

MapColorMode.Dark: 




 

ランドマークと歩行者プロパティの表示


 
 : Map LandmarksEnabled true。

 Map ZoomLevel 7 。

 : Map PedestrianFeaturesEnabled true。

 Map ZoomLevel 16 。




 

地図サービス


 

緯度によるアドレス情報の検索


 
ReverseGeocodeQuery
 
ReverseGeocodeQuery reverseGeocodeQuery = null;
if (reverseGeocodeQuery == null || !reverseGeocodeQuery.IsBusy)
{
reverseGeocodeQuery = new ReverseGeocodeQuery();
reverseGeocodeQuery.GeoCoordinate = new GeoCoordinate(39.92, 116.46);
reverseGeocodeQuery.QueryCompleted += reverseGeocodeQuery_QueryCompleted;
reverseGeocodeQuery.QueryAsync();
}
 
private void reverseGeocodeQuery_QueryCompleted(object sender,
QueryCompletedEventArgs<IList<MapLocation>> e)
{
if (e.Error == null)
{
...
}
}

 

ある場所の経緯を調べる


 
GeocodeQuery
 
GeocodeQuery geocodeQuery = new GeocodeQuery();
geocodeQuery.SearchTerm = searchTerm;
// Can search with a nearby coordinate, or ignore the parameter.
geocodeQuery.GeoCoordinate = nearbyCoordinate == null ? new GeoCoordinate(0, 0) : nearbyCoordinate;
geocodeQuery.QueryCompleted += geocodeQuery_QueryCompleted;
geocodeQuery.QueryAsync();
 
private void geocodeQuery_QueryCompleted(object sender,
QueryCompletedEventArgs<IList<MapLocation>> e)
{
if (e.Error == null)
{
...
}
}

 

せんけいかく


 
RouteQuery
 
RouteQuery routeQuery = new RouteQuery();
// TravelMode: Driving or Walking.
routeQuery.TravelMode = TravelMode.Driving;
// List<GeoCoordinate>: List of geocoordinates representing the route.
routeQuery.Waypoints = route;
routeQuery.QueryCompleted += routeQuery_QueryCompleted;
routeQuery.QueryAsync();
 
private void routeQuery_QueryCompleted(object sender,
QueryCompletedEventArgs<Route> e)
{
if (e.Error == null)
{
...
}
}

 

オフラインマップ管理


 
MapDownloaderTask task = new MapDownloaderTask();
task.Show();

 

サンプルコードのダウンロード


 
File:MapSample.zip