首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用SharpMap显示谷歌地图图层?

如何使用SharpMap显示谷歌地图图层?
EN

Stack Overflow用户
提问于 2016-08-30 11:33:31
回答 1查看 2.4K关注 0票数 0

我是SharpMap的新手,没有任何使用地理信息系统的经验。

如何让sharpmap显示google地图,然后使用纬度和经度值显示地图上的一些点?(例如:点1纬度:-36.853427,经度: 174.770385;点2经度:-36.853333,经度: 174.770496)。

我真的被困住了,我将非常感谢任何帮助。

这是我到目前为止所知道的:

代码语言:javascript
复制
using System;
using System.Drawing;
using System.Windows.Forms;
using SharpMap.Layers;
using BruTile.Web;

namespace sharp_map_test
{
    public partial class Form1 : Form
    {
        double point1Lat = -36.853427;
        double point1Long = 174.770385;
        double point2Lat = -36.853333;
        double point2Long = 174.770496;

        public Form1()
        {
            InitializeComponent();

            SharpMap.Map myMap = new SharpMap.Map(new Size(400, 300));
            // Output size
            myMap.Size = new System.Drawing.Size(300, 200);

            // Minimum zoom allowed
            myMap.MinimumZoom = 100;
            // Set background
            myMap.BackColor = Color.White;

            var layergoogle = new TileLayer(new GoogleTileSource(GoogleMapType.GoogleMap), "googlemaps");
            var layer = new VectorLayer("test");
            myMap.Layers.Add(layergoogle);

            // Render the map
            myMap.ZoomToExtents();
            System.Drawing.Image imgMap = myMap.GetMap();

        }

        private void Form1_Load(object sender, EventArgs e)
        {
            // Display point1Lat and point1Long point on the google map
            // Add text saying "Device A" to the point.

            // Display point2Lat and point2Long point on the google map
            // Add text saying "Device B" to the point.

            // Refresh map and get the correct zoom level
        }
    }

}

EN

回答 1

Stack Overflow用户

发布于 2016-11-02 06:11:44

我只是为了反对谷歌地图许可的教育purpose..Its而分享这篇文章

您可以使用此代码创建googletile切片地图

代码语言:javascript
复制
map.BackgroundLayer.Clear();
        var GoogleSatellitesource = CreateGoogleTileSource("http://mt{s}.google.com/vt/lyrs=m@130&hl=en&x={x}&y={y}&z={z}");
        TileAsyncLayer GoogleSatellite = new SharpMap.Layers.TileAsyncLayer(GoogleSatellitesource, "GoogleSatellite");
        map.BackgroundLayer.Add(GoogleSatellite);

CreateGoogleTileSource如下所示

代码语言:javascript
复制
 private static ITileSource CreateGoogleTileSource(string urlFormatter)
    {
        return new HttpTileSource(new GlobalSphericalMercator(), urlFormatter, new[] { "0", "1", "2", "3" },
            tileFetcher: FetchImageAsGoogle());
    }

FetchImageAsGoogle是as

代码语言:javascript
复制
 private static Func<Uri, byte[]> FetchImageAsGoogle()
    {

            return uri =>
                {
                    var httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
                    httpWebRequest.UserAgent =
                        @"Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7";
                    httpWebRequest.Referer = "http://maps.google.com/";
                    try
                    {
                        return RequestHelper.FetchImage(httpWebRequest);
                    }
                    catch (Exception ex)
                    {


                        return null;
                    }
                };

    }

请记住,使用最新版本的sharpmap和来自github的SharpMap.Layers.BruTile

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39218376

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档