Arcgis for Javascript API下类似于百度搜索A、B、C、D marker的实现方式

GMap.NET实战:C#桌面地图控件选型、轨迹绘制与踩坑指南 地图控件是桌面GIS与GPS监控系统开发中的基础组件。传统方案常借助Web地图SDK嵌入浏览器,存在交互延迟、离线部署困难等问题。GMap.NET作为纯C#实现的开源地图控件,基于瓦片地图机制,直接在WinForm窗体中渲染多源底图,支持OpenStreetMap、ArcGIS等数据源,无需申请Key即可快速搭建地图界面。其Overlay分层模型让Marker标记、Route轨迹、Polygon围栏等要素的绘制与更新变得清晰可控;结合Timer与坐标插值,还能实现流动轨迹动画效果,模拟车辆实时行驶过程。在实 阅读详情

多说无益,首先贴两张图让大家看看具体的效果:


图1、百度地图搜索结果


图2、Arcgis for JavaScript实现的效果

看到了效果,是不是各位有点小鸡动,是不是也宠宠欲动,有木有?但是具体是怎么实现的呢?下面我来详细的给各位说说我的实现思路吧。


第一,数据。

其实搜索的对象从类型上来说,应该是点、线、面都支持的,但是在实际的操作过程中,不论是百度还是我自己做的时候,都会将所有的对象抽成点对象,也就是将每一个对象转换成为POI热点,再将对象的坐标信息提取出来,将所有对象入库。


第二,实现。

实现该效果,首先,根据用户的查询条件从数据库里面获取数据,数据返回给web端的是JSON格式的。获取到数据之后,接着做数据在左侧的分页展示与地图上与左侧列表相对应的展示,左侧列表的展示我就不详细说了,做过web的大家都有一万种方法去实现它,重点说说地图上的展示。

这些红色的气泡是一个graphiclayer,每一个气泡是一个graphic,只是根据不同的顺序,graphic的PictureMarkerSymbol不同而已,下面是实现的代码:

  1. <span style="white-space:pre">    </span>addQueryPopup = function(data){  
  2.         redPopupLayer.clear();  
  3.         var mlpoint = new esri.geometry.Multipoint(new esri.SpatialReference({ wkid:4326}));  
  4.         var graphic = null;  
  5.         for(var i=0;i<data.length;i++){        
  6.             var att=data[i];  
  7.             var pt = new esri.geometry.Point(att.x,att.y,new esri.SpatialReference({ wkid:4326}));  
  8.             mlpoint.addPoint(pt);  
  9.             var sms = null;  
  10.             switch(i){  
  11.                 case 0:{  
  12.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/A.PNG",15,19);  
  13.                     break;  
  14.                 }  
  15.                 case 1:{  
  16.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/B.PNG",15,19);  
  17.                     break;  
  18.                 }  
  19.                 case 2:{  
  20.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/C.PNG",15,19);  
  21.                     break;  
  22.                 }  
  23.                 case 3:{  
  24.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/D.PNG",15,19);  
  25.                     break;  
  26.                 }  
  27.                 case 4:{  
  28.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/E.PNG",15,19);  
  29.                     break;  
  30.                 }  
  31.                 case 5:{  
  32.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/F.PNG",15,19);  
  33.                     break;  
  34.                 }  
  35.                 case 6:{  
  36.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/G.PNG",15,19);  
  37.                     break;  
  38.                 }  
  39.                 case 7:{  
  40.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/H.PNG",15,19);  
  41.                     break;  
  42.                 }  
  43.                 case 8:{  
  44.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/I.PNG",15,19);  
  45.                     break;  
  46.                 }  
  47.                 default:{                     
  48.                     sms = new esri.symbol.PictureMarkerSymbol("index/css/map/images/location_icon/J.PNG",15,19);  
  49.                 }  
  50.             }  
  51.             graphic = new esri.Graphic(pt, sms, att);                         
  52.             redPopupLayer.add(graphic);   
  53.         }  
  54.         var extent = mlpoint.getExtent();  
  55.         map.setExtent(extent.expand(2));  
  56.     };  

这样,就实现了类似于上图的效果。


第三,联动。

联动,是个什么概念呢?对于搜索出来的结果,点击气泡,会弹出该对象的信息,如下:


图3、百度地图的信息框


图4、arcgis的信息框

所谓的联动呢,就是点击左侧列表也能弹出点击红气泡一样的信息框,那么在Arcgis中如何实现呢?下面再说说我实现该效果的思路。

一般来说,信息框里面显示的内容大都是动态获取的,所以我的处理方式是给传递一个该对象唯一编码id的参数,在后台获取到数据之后在后台拼html代码或者传到前台拼html代码,实现方法如下:

  1. <span style="white-space:pre">    </span>/** 
  2.      * 显示对象信息框InfoWindow 
  3.      */  
  4.     showObjInfo = function(id){       
  5.         $.ajax({  
  6.             url:"wateruserbaseController.do?baseInfoSummary&id="+id,  
  7.             type:"POST",  
  8.             dataType:"html",  
  9.             success:function(data){  
  10.                 data=eval(data);  
  11.             var pt = new esri.geometry.Point(data.x,data.y,{wkid:4326});  
  12.             var name = data.name;  
  13.                 map.infoWindow.resize(350,300);  
  14.             map.infoWindow.setTitle(name+"  <a class='detailsinfo' id='detailsinfo'>详细</a>");  
  15.             $("#detailsinfo").on("click",function(){  
  16.                 showObjDetailInfo(id,name);  
  17.             });  
  18.             map.infoWindow.setContent(data.html);  
  19.             map.infoWindow.show(pt);  
  20.             }  
  21.         });       
  22.     };  

有了以上方法,在左侧列表和marker对象点击的时候调用相同的方法,传递参数为该对象的唯一编码id即可。

眼细的朋友可能看到了,在信息框的标题栏还有一个详细的链接,是的,这个链接是起作用的,点击详细链接,弹出该对象的详细信息,调用的方法如下:

  1. <span style="white-space:pre">    </span>/** 
  2.      * 显示详细信息 
  3.      */  
  4.     showObjDetailInfo = function(id){       <pre name="code" class="javascript"><span style="white-space:pre">      </span>$.ajax({  
  5.             url:"wateruserbaseController.do?baseInfo&id="+id,  
  6.             type:"POST",  
  7.             dataType:"html",  
  8.             success:function(data){  
  9.                 data=eval(data);  
  10.             var name = data.name;  
  11.             $.Window.setTitle(name);  
  1. <span style="white-space:pre">            </span>$.Window.setContent(data.html);  
  2.             $.Window.show();  
  3.             }  
  4.         });  

};

ArcGIS api for javascript使用高德地图POI服务 html:搜索框,搜索提示,搜索下拉菜单 JS:上下键移动提示内容,选取提示内容,ArcGIS API for JavaScript显示地图与POI信息 服务:高德地图POI服务 可用! 立即下载

相关推荐

基于ArcGIS API for JavaScript加载百度各种类型切片地图

基于ArcGIS API for JavaScript加载百度各种类型切片地图,资源包括封装的BaiduLayer模块,示例页面。

(六)ArcGIS API For Javascript之查询功能

1.引言 在ArcGIS API中查询功能是非常常用的,Esri给我们提供了三个类用于实现矢量数据查询功能。FindTask,QueryTask,IdentifyTask,他们之间的区别为: FindTask只能进行属性查询,QueryTask,IdentifyTask两个类既可以进行属性查询也可以进行空间查询。对于QueryTask,IdentifyTask两个类,QueryTask

似水流年 3908

【随机过程】 3 - 随机过程的频域分析1 - 功率谱

随机过程的频域分析 文章目录随机过程的频域分析1. 什么是谱2. 确定信号的频谱2.1 周期信号的频谱2.2 非周期信号的频谱3. 随机信号的谱3.1 随机信号做傅里叶分析的困难3.2 功率谱密度的物理和数学表示形式3.2.1 功率谱密度的物理表示3.2.2 功率谱密度的数学表示3.3 功率谱密度的解读3.3.1 量纲分析3.3.2 谱3.3.3 密度3.3.4 wiener和khinchin3.4 功率谱密度的性质3.4.1 非线性3.4.2 偶函数3.5 wiener-khinchin关系的应用3.6

qq_41741344的博客 3132

arcgis api结合高德poi搜索接口

应用场景:通过高德poi查询接口,在天地图上打点展示,效果如下 实现步骤: 1、通过arcgis api 加载天地图。(资源里有已经封装好的天地图js,引入即可使用) 2、通过高德poi查询接口获取数据。(需要在高德地图API申请web服务的密钥) 3、通过dojo发布者模式,发布和接收经纬度信息的任务。(不是必须,也可用其他方法实现) 4、将接收到的经纬度信息进行坐标系转换,然后打点到地图上。(资源里有在前端就可以实现坐标系转换函数的js) 实现代码,下载资源后,可直接打开: 资源下载:包含封装了天地图

QQ24382327博客 1198

Unity 数字孪生实战:PiXYZ Plugin工业模型高效处理指南

本文是Unity数字孪生实战指南,重点介绍了如何使用PiXYZ Plugin高效处理工业CAD模型。针对工业模型导入Unity时面临的格式壁垒、数据爆炸和资产混乱等核心痛点,文章提供了从环境安装、基础导入到智能减面、资产清理的完整解决方案,并分享了预设自动化、运行时导入等高级技巧与性能优化策略,帮助开发者快速打通工业设计与实时交互流程。

weixin_29009501的博客 257

SRAM Bank数量配置:性能、面积与功耗的权衡指南

SRAM(静态随机存取存储器)是芯片设计中的关键存储单元,其Bank数量配置直接影响访问延迟、吞吐率、功耗和面积。Bank切分通过将存储阵列分区,缩短位线和字线延迟,从而提升性能,但会增加外围电路开销。合理配置Bank数量可优化PPA(性能、功耗、面积),在28nm和16nm工艺下,2个Bank通常是性价比最高的选择。本文基于实测数据,探讨不同场景下的Bank配置策略,帮助工程师避免常见误区,提升设计效率。

weixin_27230891的博客 179

arcGis for js 3D marker

引用 require( [ "esri/Map", "esri/views/SceneView", "esri/Camera", "esri/Graphic", "esri/layers/GraphicsLayer", ], function( Map, SceneView, Camera, Graphic,GraphicsLayer) { //todo .

github_39096247的博客 497

Centos7安装NVIDIA驱动并在docker容器中使用GPU

Centos7安装NVIDIA驱动并在docker容器中使用GPU

运维giao的博客 2084

Arcgis for javascript实现百度地图ABCD marker的效果

在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用。

LZUGIS 6310

【Nordic实战】nRF54L15引脚规划:电源域、专用引脚与低功耗设计避坑指南

本文深入解析Nordic nRF54L15芯片的引脚规划策略,重点阐述其基于电源域(MCU域、PERI域、LP域)的GPIO分配原则。文章提供了从思维转变到实战避坑的完整指南,强调遵循专用引脚与域对应关系是实现超低功耗设计的关键,并分享了系统化的引脚规划流程与工具使用建议。

weixin_29192141的博客 321

Claude桌面端安装失败?Retrying无限重试终极解决方案(亲测有效)

Claude桌面端安装卡在Retrying并非网络问题,而是安装器下载源异常导致。本文提供已验证方案:一条命令即可解决问题🚀

XiaoqiangClub的博客 2335

附近餐厅推荐实战:基于地理编码与Foursquare的轻量级数据方案

附近餐厅推荐是本地生活服务中的基础技术场景,其核心在于地理定位精度、POI数据可信度与实时性之间的平衡。原理上需完成地址解析→坐标锚定→空间检索→多维排序四步闭环,关键技术价值体现在规避地图API评分缺失、营业状态模糊、分类粒度不一等工程陷阱。典型应用场景包括城市步行圈餐饮发现、轻量MVP快速验证及用户自主定义‘附近’的个性化工具构建。本文聚焦真实世界数据结构理解与规则引擎设计,深入解析Nominatim地理编码稳定性、Foursquare API分页与距离校准、rating与tipCount联合验证等关键

weixin_34174322的博客 392

十年芯片资深IC设计工程师面经系列(四)SDC约束

set_driving_cell:当我们的设计是模块级(Block level)的design时,我们的设计前面一般还有其他的设计,那么前面模块的输出便是我们模块的输入,5.1set_false_path:可以单独的时钟或者路径进行约束。set drive :当我们的设计是芯片级(Chip level)的顶层设计时,芯片外围电路要驱动的是负载较大的IO单元,故需要的驱动能力较强,:set_load 是指output端口的负载,设置的值会影响输出到端口的net上的电容,从而影响相应的路径延时。

weixin_47349046的博客 1773

OL2中实现百度地图ABCD marker的效果

概述: 上文中提到了在Arcgis for JS中实现百度地图ABCD的marker效果,在本文,讲述如何在OpenLayers2中实现类似的效果。 效果: 为直观期间,先将效果贴出来。 效果图1 联动展示 思路: 1、列表与地图的互动 鼠标经过列表时,修改列表图标,并根据列表返回的值在地图上绘蓝色的marker;鼠标移出,修改列表图标为红色,清空地图mar...

a18826265589的博客 268

WinCC实现定时存储数据至SQLServer

环境 Win10 WinCC V7.5 SQL Server 2016 运行结果 流程 WinCC变量 全局VB脚本 (我设置的是每2秒存一次,因此周期性触发器设置1秒)

skr? 3987

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ArcGIS API for JavaScript中要素图层查询(地图外搜索点击查询)的方法总结

1.Arcgis API for JavaScript中常见的三种查询方式 在Arcgis API for JavaScript中常见的属性查询有三种方式:QueryTask,FindTask,IdentifyTask.【具体用法请参考官网示例】 QueryTask:只可在要素服务(featurelayer)或者某个地图服务(MapImageLayer)的某个子图层进行查询(如下图,你发布的地图服务必须要可以支持query才可以,发布服务如果为featurelayer其本身就支持,如果发布为MapI

韦_恩的博客 7276

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ArcGIS API for Silverlight 自定义MarkerSymbol

概述 之前我们做ArcGIS开发的时候都是使用ArcEngine或是ArcServer ADF,展示给

mytudousi的专栏 4884

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

前端开发arcGIS jsAPI简易归纳(2D基础1)

开发arcgis主要步骤: 获取API——选择地图——添加图层——更改样式——配置弹出窗口——保存地图 获取api的方式:https://developers.arcgis.com/javascript/latest/guide/get-api/(可以先使用CDN方法进行引入练习) 最简单的操作代码 <!DOCTYPE html> <html lang="en"> <...

老梅的博客 2205

GIS(一)——在js版搜索地图上添加Marker标记

由于我们做的是有关于旅游方面的项目,所以涉及到了地图功能。我接到的其中一个任务就是,在地图上显示指定的几个景点,并在地图上加上标记。        我们项目用的是搜狗地图,使用的是js版本。大家有兴趣的话,可以参考搜索地图api以及示例代码。        在地图上添加标记是地图的一个基本功能。这个标记叫做Marker。可以从这里看官网上对于Marker类的介绍。        实现的基本步

崔成龙 . 勇往直前 1万+

ArcGIS API for JavaScript开发之SimpleMarkerSymbol

ArcGIS API for JavaScript 开发SimpleMarkerSymbol(1)angle(2)color(3)outline(4)path(5)style(6)type(7)xoffset(8)yoffset SimpleMarkerSymbol require(["esri/symbols/SimpleMarkerSymbol"], function(SimpleMarkerSymbol) { /* code goes here */ }); SimpleMarkerSymbol用于

weixin_45752569的博客 3840
上一篇: Arcgis for JS之Cluster聚类分析的实现
下一篇: geotools读取shapefile文件
韩慧兵
博客等级 码龄15年 170粉丝 171原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值