热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

C#学习教程:GMap.Net标记最初位置不正确分享

GMap.Net标记最初位置不正确我使用GMap添加了一个标记,并指定了latlong。当应用程序启动时,标记放置在错误的位置(在GMap控件的中心),然后当我缩放时,它会转到指定

GMap.Net标记最初位置不正确

我使用GMap添加了一个标记,并指定了lat / long。 当应用程序启动时,标记放置在错误的位置(在GMap控件的中心),然后当我缩放时,它会转到指定的坐标。 这是GMap中的错误还是我做错了什么? 这是代码。

GMapOverlay markersOverlay, mo2; GMarkerGoogle marker, marker5; GMapOverlay polyOverlay; List points; GMapRoute gr; Graphics g; bool start = true; double move = .0001; //double move = 1; double lt = 73, lg = -180; // double lt = 29, lg = -93; public Form1() { AllocConsole(); InitializeComponent(); try { System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("www.google.com"); } catch { gmap.Manager.Mode = AccessMode.CacheOnly; MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET - Demo.WindowsForms", MessageBoxButtons.OK, MessageBoxIcon.Warning); } gmap.MapProvider = GMapProviders.BingHybridMap; gmap.Position = new PointLatLng(32, -100); gmap.MinZoom = 3; gmap.MaxZoom = 15; gmap.Zoom = 9; markersOverlay = new GMapOverlay("markers"); mo2 = new GMapOverlay("markers5"); marker5 = new GMarkerGoogle(new PointLatLng(lt, lg), GMarkerGoogleType.orange_small); g = this.CreateGraphics(); } private void Form1_Load(object sender, EventArgs e) { gmap.DragButton = MouseButtons.Left; gmap.ShowCenter = false; points = new List(); polyOverlay = new GMapOverlay("polygons"); // gmap.Position = new PointLatLng(32.6961334816182, -100.2985095977783); // gmap.MinZoom = 0; GMapPolygon polygon = new GMapPolygon(points, "mypolygon"); polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Magenta)); // polygon.f polygon.Stroke = new Pen(Color.Magenta, 2); } protected void OnMouseMove(object sender, MouseEventArgs e) { // base.OnMouseMove(e); PointLatLng p = gmap.FromLocalToLatLng(eX, eY); MouseLatLong.Text = Convert.ToString(p); // Console.WriteLine(marker.Position.Lat); } private void SubmitButton_Click(object sender, EventArgs e) { // gmap.Position = new PointLatLng(40.6961334816182, -100.2985095977783); marker = new GMarkerGoogle(new PointLatLng(double.Parse(LattextBox.Text), double.Parse(LongtextBox.Text)), new Bitmap(@"C:UsersVaibDocumentsVisual Studio 2013ProjectstestGmaptestGmapResourceswpt.png")); // GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(-25.966688, 32.580528),flag); mo2.Markers.Add(marker); gmap.Overlays.Add(mo2); marker.ToolTip = new GMapToolTip(marker); marker.ToolTipText = NametextBox.Text; marker.ToolTipMode = MarkerTooltipMode.Always; // x++; if (start) { gmap.Position = new PointLatLng(marker.Position.Lat, marker.Position.Lng); start = false; } points.Add(new PointLatLng(marker.Position.Lat, marker.Position.Lng)); // points.Add(new PointLatLng(double.Parse(LattextBox.Text), double.Parse(LongtextBox.Text))); // GMapPolygon polygon = new GMapPolygon(points, "mypolygon"); gr = new GMapRoute(points, "route"); gr.Stroke = new Pen(Color.Magenta, 2); //Console.WriteLine(gr.From + "-->"+gr.To); // polygon.Stroke = new Pen(Color.Magenta, 2); polyOverlay.Routes.Add(gr); gmap.Overlays.Add(polyOverlay); // m1 = new GMarkerGoogle(new PointLatLng(gr.From.Value.Lat, gr.From.Value.Lng), //GMarkerGoogleType.yellow_small); ga = new GMarkerArrow(new PointLatLng(gr.From.Value.Lat, gr.From.Value.Lng)); if (points.Count >= 2) ga.Bearing = (float)final(gr.From.Value.Lat, gr.From.Value.Lng, points[1].Lat, points[1].Lng); // marker2 = new GMapMarkerImage(new PointLatLng(marker.Position.Lat, marker.Position.Lng), markersOverlay.Clear(); //m1.rot(180); // m1.OnRender(g); // markersOverlay.Markers.Add(marker2); markersOverlay.Markers.Add(ga); gmap.Overlays.Add(markersOverlay); } 

诀窍是首先添加叠加,然后添加标记:

gMapControl.Overlays.Add(markersOverlay); markersOverlay.Markers.Add(标记);

编辑

就像你可以在评论中看到的那样:添加

 gmap.Overlays.Clear() 

在方法的最开始

 private void SubmitButton_Click(object sender, EventArgs e) 

是他的问题的答案。

我在WinForms应用程序上使用MSVC2010(C ++)并遇到了同样的问题 – 下午大部分时间都要解决。

这个post很有用,但是我发现你需要做的就是(抱歉它不是C#)在你第一次添加标记时注释掉了 – 请参阅

上述就是C#学习教程:GMap.Net标记最初位置不正确分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—编程笔记

 // DO NOT ADD... line // Make marker WindowsForms::Markers::GMarkerGoogle ^MyMarker; WindowsForms::Markers::GMarkerGoogleType MyType = safe_cast(3); // Blue marker 3 MyMarker = gcnew WindowsForms::Markers::GMarkerGoogle( PointLatLng(40.7, -74.0), MyType); // MyOverlay->Markers->Add(MyMarker); // DO NOT ADD THE MARKER!!! gMapControl1->Overlays->Add(MyOverlay); MyMarker = gcnew WindowsForms::Markers::GMarkerGoogle( PointLatLng(40.7, -74.0), MyType); MyOverlay->Markers->Add(MyMarker); gMapControl1->Overlays->Add(MyOverlay); gMapControl1->ReloadMap(); 


推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文详细介绍了PHP中与URL处理相关的三个函数:http_build_query、parse_str和查询字符串的解析。通过示例和语法说明,讲解了这些函数的使用方法和作用,帮助读者更好地理解和应用。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 怎么在PHP项目中实现一个HTTP断点续传功能发布时间:2021-01-1916:26:06来源:亿速云阅读:96作者:Le ... [详细]
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了如何在Mac上使用Pillow库加载不同于默认字体和大小的字体,并提供了一个简单的示例代码。通过该示例,读者可以了解如何在Python中使用Pillow库来写入不同字体的文本。同时,本文也解决了在Mac上使用Pillow库加载字体时可能遇到的问题。读者可以根据本文提供的示例代码,轻松实现在Mac上使用Pillow库加载不同字体的功能。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
author-avatar
指间流年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有