现在的位置: 首页 > 综合 > 正文

在开发中使用GMap.Net的心得三

2013年08月16日 ⁄ 综合 ⁄ 共 1988字 ⁄ 字号 评论关闭

好长时间没更新我的Blog 了,今天抽个空,继续写一下我对GMap.Net控件的使用心得

这次我要用GMap.Net控件来查找定位到某个地点,我这我也是参考伍华聪伍大神的,待会我会把他的链接地址贴过来.不过人家是大神,把控件里面有些接口都改了,如果全照搬

他的,那肯定不行,绝对运行不了,容易把人搞郁闷.幸亏事先我对GMap.Net 的一定的了解,才没有把自己深陷其中.

好了闲话不多说,开始吧 

      /// <summary>
        /// 查找定位到某个地方
        /// </summary>
        private void button1_Click(object sender, EventArgs e)
        {
            string search = this.textBox1.Text;
            this.gMapControl1.Zoom = 8;
            try
            {
                GeoCoderStatusCode code = this.gMapControl1.SetCurrentPositionByKeywords(search);
                if (code == GeoCoderStatusCode.G_GEO_SUCCESS)
                {
                    MessageBox.Show(search + "到了");
                    AddLocation(search);//绘制图标
                }
                else//如果没有定位成功 则返回失败的原因
                {
                    MessageBox.Show("地址没有找到" + " 原因:" + code.ToString());
                }
            }
            catch (Exception se)
            {
                MessageBox.Show(se.Message);
            }    
        }
        /// <summary>
        /// 查到地点之后 再绘制图标
        /// </summary>
        /// <param name="place">地点</param>
        public void AddLocation(string place)
        {
            GeoCoderStatusCode unknow = GeoCoderStatusCode.Unknow;
            PointLatLng? latLngFromGeocoder = Singleton<GMaps>.Instance.GetLatLngFromGeocoder(place, out unknow);
            if (latLngFromGeocoder.HasValue && (unknow == GeoCoderStatusCode.G_GEO_SUCCESS))
            {     
                GMapMarker item = new GMapMarkerGoogleGreen(latLngFromGeocoder.Value);
                item.ToolTipText = place;
                item.ToolTipMode = MarkerTooltipMode.Always;
                this.MyMark.Markers.Add(item);
            }   
        }

GeoCoderStatusCode  我也不大了解到底是干什么用的,只会用,应该是保存一种状态的基类吧

PointLatLng? latLngFromGeocoder = Singleton<GMaps>.Instance.GetLatLngFromGeocoder(place, out unknow);
还有这句话我也不清楚,暂时不清楚也不紧,会用,达到了自己的要求即可.
 对呢 还有一个截图功能 点击截图按钮
private void jietuBtn_Click(object sender, EventArgs e)
        {
            try
            {
                using (SaveFileDialog dlg = new SaveFileDialog())
                {
                    dlg.Filter = "PNG(*.png)|*.png";
                    dlg.FileName = "GMap.NET image";
                    Image image = this.gMapControl1.ToImage();
                    if (image != null)
                    {
                        using (image)
                        {
                            if (dlg.ShowDialog() == DialogResult.OK)
                            {
                                string filename = dlg.FileName;
                                if (!filename.EndsWith(".png", StringComparison.OrdinalIgnoreCase))
                                {
                                    filename += ".png";
                                }
                                image.Save(filename);
                                MessageBox.Show("图片已保存:" + dlg.FileName, "GMap.NET");
                            }
                        }
                    }
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show("图片保存失败:" + exception.Message, "GMap.NET");
            }
        }

可以生成png 格式的图片 有一定的用处


伍大神的 链接地址  http://www.cnblogs.com/wuhuacong/archive/2010/03/10/1681790.html


下一次 我会讲一下关于 GMap.Net 处理缓存的问题







【上篇】
【下篇】

抱歉!评论已关闭.