ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图文解说ChinaCock高德地图组件-显示多个标注(四)

2022-05-15 05:00:06  阅读:307  来源: 互联网

标签:AsString 地图 mk 高德 FJD ChinaCock 图文 FieldByName 标注


前文介绍了如何在地图上通过设置标注来采集位置的经纬度,当用户采集了多个实体的位置信息后,我们就可以在地图上一次性显示这些实体的标注了!

基于前文,接下来在地图上的做标注就很简单了,可以复用以前的代码,具体参阅:图文解说ChinaCock高德地图组件采集坐标 (二)

接下来,我们再做一个过程:

procedure TMarkerMapFrame.MarkerAll;
var
  mk: TCCuniGUIAMap.TMarker;
begin
  with UniMainModule do
  begin
    q.Close;
    q.Query.Text := '你的查询语句';
    q.Open;

    q.First;
    while not q.Eof do
    begin
      mk := AddMarker(q.FieldByName('FJD').AsFloat, q.FieldByName('FWD').AsFloat, q.FieldByName('FName').AsString);

      if (q.FieldByName('FJD').AsString <> '') and (q.FieldByName('FJD').AsString <> '') then
      begin
        mk:=  AddMarker(q.FieldByName('FJD').AsFloat, q.FieldByName('FWD').AsFloat, q.FieldByName('FName').AsString);
       mk.CustomParams.Values['name']:=q.FieldByName('FName').AsString;
      end;
      q.Next;
    end;
  end;
  // 适应地图对象 让所有对象都在地图最佳区域内
  self.CCuniGUIAMap1.SetFitView(True);

end;

该过程,通过查询一个TDataSet并循环这个数据集,在循环过程中调用AddMarker方法,在地图上画出每个实体的标注。

画完所有的标注,调用地图的SetFitView方法,让所有的标注点正好都显示在地图上。

同样,基于前文,可以实现当用户鼠标移动到一个标注时显示他的名称,但问题来了,如果用户想了解一个标注点时,如何支持呢?

这里,我是这样实现的,就是当用户在一个标注点上单击鼠标,隐藏原来的名称标签,换成一个大的标签来显示详细信息。

在实现的过程中,测试了两种方案,都可以满足上面的需求,接下来,分别介绍这两种方案的实现过程:

一、纯Delphi实现方式

利用一个uniPanel组件,基于他设计详细的显示内容,注意这里的优点,就是可视化的设计这个Panel,发挥想象,你可以放置任意你想放置的可视控件进去。

二、标签实现方式

基于地图控件的Text属性来显示详细内容,与前文的实现,利用标签Text对象显示标注的名称是一样的过程,只不过这里显示更多的内容。这种方式的优点是完全与地图集成一体,运行效率效率高。

 

标签:AsString,地图,mk,高德,FJD,ChinaCock,图文,FieldByName,标注
来源: https://www.cnblogs.com/kinglandsoft/p/16267064.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有