使用Monotouch的Route-me绑定使用离线地图源

时间:2013-09-24 14:29:47

标签: ios xamarin.ios xamarin route-me

我正在尝试让route-me显示捆绑或在安装应用后下载的离线地图。我正在使用route-me绑定示例项目来完成目前的工作。我还使用原始mbtiles repo的route-me项目中的SampleMap文件。我将文件复制到项目的根目录并将其构建操作设置为BundleResource(这是我认为合适的)。之后我改为代码:

public override void ViewDidLoad ()
{ 
    base.ViewDidLoad ();

    RMDBMapSource dbSource = new RMDBMapSource ("Philadelphia.mbtiles");

    MapView = new RMMapView(View.Frame, dbSource.Handle);
    MapView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions;

    if (UIScreen.MainScreen.Scale > 1.0)
        MapView.AdjustTilesForRetinaDisplay = true;

    Add (MapView);
}

但没有运气。应用程序在模拟器中运行,但仅显示灰色背景。所以我需要有人来帮助我并告诉我我做错了什么。我需要在本周完成它,因为下周是项目的截止日期。所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

我自己实际上并没有使用离线图块,但基于this thread,您可能需要将RMDBMapSource放入RMMapContents的实例而不是直接放入MapView。所以我认为Xamarin会是这样的:

RMDBMapSource dbSource = new RMDBMapSource ("Philadelphia.mbtiles");

MapView = new RMMapView(View.Frame, new IntPtr());

RMMapContents contents = new RMMapContents (MapView.Handle, dbSource.Handle);

假设您有一个RMMapContents的包装器绑定,从绑定项目的外观来看,它默认情况下没有。您需要引入一个至少定义构造函数的包装器。

This page看起来它向底部提供了类似的代码(在Obj-C中)。