簡體   English   中英

MapWinGis的離線平鋪服務

[英]Offline tile services for MapWinGis

MapWinGIS具有PrefetchToFolder功能,可以將切片緩存到指定的文件系統文件夾以供進一步離線使用。 此功能完美運行,但如何加載該圖塊以在受限區域中創建離線地圖? 以下是使用PrefetchToFolder的示例:

        double y = 39;    // latitude, deg.
        double x = 140;     // longitude, deg.
        double span = 5;  // deg.
        Extents ext = new Extents();
        ext.SetBounds(x - span, y - span, 0.0, x + span, y + span, 0.0);
        axMap1.Tiles.PrefetchToFolder(ext, 8, 0, @"c:\map1", ".png", StopFunction());

我的編程語言是C#。

以下是一些可以獲取但無法加載的代碼:

    private void btnLoad_Click(object sender, EventArgs e)
    {
        TileProviders providers = axMap1.Tiles.Providers; ;
        int providerId = (int)tkTileProvider.ProviderCustom + 1;    
        providers.Add(providerId, "MyProvider", @"file:///C|/map1/{zoom}/{x}/{y}.png", tkTileProjection.SphericalMercator, 1, 18);

        axMap1.Projection = tkMapProjection.PROJECTION_GOOGLE_MERCATOR;
        axMap1.TileProvider = tkTileProvider.ProviderCustom;
        axMap1.Tiles.ProviderId = providerId;

        axMap1.Latitude = 39;
        axMap1.Longitude = 140;
        axMap1.CurrentZoom = 8;

    }

    private void btnSave_Click(object sender, EventArgs e)
    {
        double y = 39;    // latitude, deg.
        double x = 140;     // longitude, deg.
        double span = 5;  // deg.
        Extents ext = new Extents();
        ext.SetBounds(x - span, y - span, 0.0, x + span, y + span, 0.0);
       axMap1.Tiles.PrefetchToFolder(ext,1 , 0, @"c:\map1", ".png", StopFunction());
    }

你應該使用服務器。 例如: mapserver

對於Windows:

1)下載ms4w: http//www.maptools.org/ms4w/index.phtml? page = download.html

2)解壓根目錄(c:/ ms4w)

3)運行/ms4w/apache-install.bat(在命令行或雙擊它)啟動MS4W Apache Web服務器。 此文件將Apache安裝為Windows服務(稱為“Apache Web Server”),以便在重新啟動計算機時啟動它。 執行時,應彈出DOS窗口,並顯示以下消息:

Installing the Apache MS4W Web Server service
The Apache MS4W Web Server service is successfully installed.
Testing httpd.conf....
Errors reported here must be corrected before the service
can be started.
The Apache MS4W Web Server service is starting.
The Apache MS4W Web Server service was started successfully.

4)復制tile文件/ ms4w / Apache / htdocs / maps

5)然后你應該在http:// localhost / maps中看到這些文件

瓷磚文件genaration

對於這個過程,我使用mapertive。 這個程序免費並生成openstreet地圖。 這是鏈接: http//maperitive.net/

代碼示例:

    TileProviders providers = axMap1.Tiles.Providers; ;
    int providerId = (int)tkTileProvider.ProviderCustom + 1;    
    providers.Add(providerId, "MyProvider", "http:/localhost/maps/{zoom}/{x}/{y}.png", tkTileProjection.SphericalMercator, 1, 18);

    axMap1.Tiles.ProviderId = providerId;
    axMap1.CurrentZoom = 8;

結果=

在此輸入圖像描述

是的這個解決方案有效 請檢查提供者添加方法的返回值,如果值為false,則更改+1值並再次嘗試或嘗試將投影更改為wsg84。 也許地圖已添加但你沒看到因為你的縮放級別所以在代碼中添加map.zoomToTileLevel(1)行而不是currentzoom

坦克Melih,正如你所說,我檢查了所有的東西(除了wsg84,我對此一無所知)但仍然看不到地圖! 這是我的代碼:

        axMap1.CtlbackColor = Color.Transparent;
        TileProviders providers = axMap1.Tiles.Providers;
        int providerId = (int)tkTileProvider.ProviderCustom + 100;
        //providers.Add(providerId, "Custom TMS provider", "http://{switch:a,b,c}.tile.openstreetmap.org/{zoom}/{x}/{y}.png", tkTileProjection.SphericalMercator, 1, 18);
        providers.Add(providerId, "CustomTMSprovider", @"http://localhost/maps/Tiles/{zoom}/{x}/{y}.png", tkTileProjection.SphericalMercator, 1, 18);
        axMap1.Tiles.ProviderId = providerId;
        axMap1.Projection = tkMapProjection.PROJECTION_WGS84;
        axMap1.GrabProjectionFromData = true;
        axMap1.ZoomBehavior = tkZoomBehavior.zbUseTileLevels;
        axMap1.ZoomToTileLevel(2);

如果我更改提供程序一切正常,但此提供程序無法加載地圖。 正如我所說, tile本地服務器運行良好。 再次感謝您的努力。

我的輸出

將您的URL http:/ localhost / ...更改為http:// localhost / ...您錯過了'/'

我正在做這個過程,我無法加載地圖,我有來自maperitive的map.mbtiles中的tile,但我怎么能顯示它:我必須將我的文件.mbtiles導出到.png? 如..

http:// localhost / maps / Tiles / {zoom} / {x} / {y} .png”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM