(转)Arcgis for javascript实现百度地图ABCD marker的效果
概述:
在我的博客中,有一篇相关的文章,这段时间,有很多人问我求源码,只是时间过去已长,源代码已找不到,乘着这个9.3放假,又重新实现了下,并相关代码做了优化,在此贴出来,方便大家使用。
相关文章地址:
http://blog.csdn.net/gisshixisheng/article/details/39577817
实现后效果:
为直观期间,先贴出来我做的效果

列表展示和地图展示以及联动

显示信息
实现思路:
1、列表与地图的互动
鼠标经过列表时,修改列表图标,并根据列表返回的值在地图上绘蓝色的marker;鼠标移出,修改列表图标为红色,清空地图marker图层。
关键代码:
- title.on("mouseover",function(){
- var attr = $(this).data("attr");
- $("#icon"+attr.id).css("background","url('images/blue.png')");
- var pt=new Point(attr.x,attr.y,{"wkid":4326});
- var pms = new esri.symbol.PictureMarkerSymbol("images/blue.png",24,26)
- var gImg = new Graphic(pt,pms);
- gLyrHover.add(gImg);
- });
- title.on("mouseout",function(){
- var attr = $(this).data("attr");
- $("#icon"+attr.id).css("background","url('images/red.png')");
- gLyrHover.clear();
- });
2、地图与列表的互动
鼠标经过地图红色的marker时,修改对应列表图标,并将红色 marker的图片换成蓝色的;鼠标移出,修改对应列表图标,并修改marker为红色。
关键代码:
- gLyr.on("mouse-over",function(e){
- map.setMapCursor("pointer");
- var sms = e.graphic.symbol;
- sms.url = "images/blue.png";
- gLyr.redraw();
- $("#icon"+e.graphic.attributes.id).css("background","url('images/blue.png')");
- });
- gLyr.on("mouse-out",function(e){
- map.setMapCursor("default");
- var sms = e.graphic.symbol;
- sms.url = "images/red.png";
- gLyr.redraw();
- $("#icon"+e.graphic.attributes.id).css("background","url('images/red.png')");
- });
3、地图上ABCD的文字是一个单独的图层,不参与互动。
4、数据以JSON形式存在。
- var data = [
- {
- "id":"A","name":"拉萨", "x":91.162998, "y":29.71042,
- "desc":"拉萨是中国西藏自治区的首府,西藏的政治、经济、文化和宗教中心,也是藏传佛教圣地。"
- },
- {
- "id":"B", "name":"西宁","x":101.797303,"y":36.593642,
- "desc":"西宁是青海省的省会,古称西平郡、青唐城,取”西陲安宁“之意,是整个青藏高原最大的城市。"
- },
- {
- "id":"C","name":"兰州","x":103.584297,"y":36.119086,
- "desc":"兰州,甘肃省省会,西北地区重要的工业基地和综合交通枢纽,西部地区重要的中心城市之一,丝绸之路经济带的重要节点城市。"
- },
- {
- "id":"D","name":"成都","x":104.035508,"y":30.714179,
- "desc":"成都,简称蓉,四川省省会,1993年被国务院确定为西南地区的科技、商贸、金融中心和交通、通讯枢纽。"
- }
- ];
完整代码:
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
- <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"/>
- <title></title>
- <link rel="stylesheet" href="http://localhost/arcgis_js_api/library/3.9/3.9/js/esri/css/esri.css">
- <style type="text/css">
- html, body, #map {
- height: 100%;
- margin: 0;
- padding: 0;
- font-size: 62.5%;
- font-family:"微软雅黑";
- }
- .search-box{
- z-index: 99;
- background: #fff;
- border: 1px solid #888888;
- border-radius: 5px;
- width: 220px;
- max-height:600px;
- overflow-y: auto;
- position: absolute;
- top: 120px;
- left: 10px;
- }
- .search-box-title{
- padding: 6px 10px;
- text-align: left;
- font-size: 13px;
- font-weight: bold;
- color: #f2f2f2;
- background: #85b0db;
- }
- .search-box-result{
- list-style: none;
- margin-left:-40px;
- margin-top: 0px;
- }
- .search-box-result-item{
- border-bottom: 1px solid #eeeeee;
- padding: 5px 8px;
- }
- .search-name{
- float: right;
- font-weight: bold;
- font-size: 13px;
- margin-top: 3px;
- margin-right: 10px;
- }
- .search-name-title{
- background: #f2f2f2;
- }
- .search-name-title:hover{
- cursor: pointer;
- }
- .search-detail{
- border-top: 1px dashed #eeeeee;
- margin-top: 3px;
- padding: 3px 5px;
- line-height: 18px;
- }
- .search-icon{
- background: url("images/red.png");
- width: 24px;
- height: 26px;
- background-repeat: no-repeat;
- }
- .search-text{
- color: #ffffff;
- font-weight: bold;
- font-size: 16px;
- margin-left:7px ;
- }
- .detail{
- color: #85b0db;
- font-weight: bold;
- text-align: right;
- }
- .detail:hover{
- cursor: pointer;
- }
- </style>
- <script src="http://localhost/arcgis_js_api/library/3.9/3.9/init.js"></script>
- <script src="jquery-1.8.3.js"></script>
- <script type="text/javascript">
- var map;
- var data = [
- {
- "id":"A","name":"拉萨", "x":91.162998, "y":29.71042,
- "desc":"拉萨是中国西藏自治区的首府,西藏的政治、经济、文化和宗教中心,也是藏传佛教圣地。"
- },
- {
- "id":"B", "name":"西宁","x":101.797303,"y":36.593642,
- "desc":"西宁是青海省的省会,古称西平郡、青唐城,取”西陲安宁“之意,是整个青藏高原最大的城市。"
- },
- {
- "id":"C","name":"兰州","x":103.584297,"y":36.119086,
- "desc":"兰州,甘肃省省会,西北地区重要的工业基地和综合交通枢纽,西部地区重要的中心城市之一,丝绸之路经济带的重要节点城市。"
- },
- {
- "id":"D","name":"成都","x":104.035508,"y":30.714179,
- "desc":"成都,简称蓉,四川省省会,1993年被国务院确定为西南地区的科技、商贸、金融中心和交通、通讯枢纽。"
- }
- ];
- require([
- "esri/map",
- "esri/layers/ArcGISTiledMapServiceLayer",
- "esri/geometry/Point",
- "esri/layers/GraphicsLayer",
- "esri/graphic",
- "dojo/_base/Color",
- "dojo/domReady!"],
- function(Map,
- Tiled,
- Point,
- GraphicsLayer,
- Graphic,
- Color)
- {
- map = new Map("map",{logo:false});
- var tiled = new Tiled("http://localhost:6080/arcgis/rest/services/china/MapServer",{"id":"tiled"});
- map.addLayer(tiled);
- var mapCenter = new Point(103.847, 36.0473, {"wkid":4326});
- map.centerAndZoom(mapCenter,0);
- var gLyr = new GraphicsLayer({"id":"gLyr"});
- map.addLayer(gLyr);
- var gLyrHover = new GraphicsLayer({"id":"gLyrHover"});
- map.addLayer(gLyrHover);
- var gLyrLbl = new GraphicsLayer({"id":"gLyrLbl"});
- map.addLayer(gLyrLbl);
- map.on("load",function(){
- $("#search").show();
- for(var i=0;i<data.length;i++){
- var li = $("<li />").addClass("search-box-result-item").appendTo($("#result"));
- var name = $("<div />").addClass("search-name").html(data[i].name);
- var icon = $("<div />").addClass("search-icon")
- .attr("id","icon"+data[i].id)
- .append("<div class='search-text'>"+data[i].id+"</div>");
- var title = $("<div />").addClass("search-name-title")
- .append(name).append(icon).appendTo(li)
- .data("attr",data[i]);
- var desc = $("<div />").addClass("search-detail").html(data[i].desc).appendTo(li);
- var more = $("<div />").addClass("detail").appendTo(li).html(">>详细");
- title.on("mouseover",function(){
- var attr = $(this).data("attr");
- $("#icon"+attr.id).css("background","url('images/blue.png')");
- var pt=new Point(attr.x,attr.y,{"wkid":4326});
- var pms = new esri.symbol.PictureMarkerSymbol("images/blue.png",24,26)
- var gImg = new Graphic(pt,pms);
- gLyrHover.add(gImg);
- });
- title.on("mouseout",function(){
- var attr = $(this).data("attr");
- $("#icon"+attr.id).css("background","url('images/red.png')");
- gLyrHover.clear();
- });
- title.on("click",function(){
- var attr = $(this).data("attr");
- showCity(attr);
- });
- var pt=new Point(data[i].x,data[i].y,{"wkid":4326});
- var pms = new esri.symbol.PictureMarkerSymbol("images/red.png",24,26)
- var gImg = new Graphic(pt,pms,data[i]);
- gLyr.add(gImg);
- var font = new esri.symbol.Font();
- font.setSize("10pt");
- font.setFamily("微软雅黑");
- var text = new esri.symbol.TextSymbol(data[i].id);
- text.setOffset(0,-2);
- text.setFont(font);
- text.setColor(new dojo.Color([255,255,255,100]));
- var gLbl = new esri.Graphic(pt,text,data[i]);
- gLyrLbl.add(gLbl);
- }
- gLyr.on("mouse-over",function(e){
- map.setMapCursor("pointer");
- var sms = e.graphic.symbol;
- sms.url = "images/blue.png";
- gLyr.redraw();
- $("#icon"+e.graphic.attributes.id).css("background","url('images/blue.png')");
- });
- gLyr.on("mouse-out",function(e){
- map.setMapCursor("default");
- var sms = e.graphic.symbol;
- sms.url = "images/red.png";
- gLyr.redraw();
- $("#icon"+e.graphic.attributes.id).css("background","url('images/red.png')");
- });
- gLyr.on("click",function(e){
- var attr = e.graphic.attributes;
- showCity(attr);
- });
- });
- function showCity(attr){
- var pt=new Point(attr.x,attr.y,{"wkid":4326});
- map.infoWindow.setTitle(attr.name);
- map.infoWindow.setContent(attr.desc);
- map.infoWindow.resize(200,80);
- map.infoWindow.show(pt);
- map.centerAndZoom(pt,0);
- }
- });
- </script>
- </head>
- <body>
- <div id="search" class="search-box" style="display: none;">
- <div class="search-box-title">查询结果</div>
- <ul class="search-box-result" id="result">
- </ul>
- </div>
- <div id="map">
- </div>
- </body>
- </html>
(转)Arcgis for javascript实现百度地图ABCD marker的效果的更多相关文章
- 关于ArcGis for javascript整合百度地图 天地图 高德地图进行搜索
1.ArcGis for javascript整合百度地图搜索 1.1.首先引入百度地图的api <!-- 引入百度地图API --> <script type="text ...
- javascript使用百度地图api和html5特性获取浏览器位置
<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>&l ...
- JavaScript对接百度地图api实现地图标点功能
粗略的做了个地图标点功能 首先,去百度注册开发者账号,然后进入到百度地图开放平台 进入到控制台, 创建浏览器端应用,给个安全域名 然后去开发者文档JavaScript里面找地图展示文档,直接怼上去就行 ...
- ArcMap和ArcGIS Pro加载百度地图
前面发布了两篇我用ArcBruTile开发用于ArcMap加载百度地图的插件ArcBruTileBaidu,放在网上后评论和反响还不错,还有两位大学同学通过百度搜索居然搜到我本人!文章和技术介绍也被网 ...
- JavaScript调用百度地图
在网站开发过程中,经常会调用到地图,百度地图提供Web开发.Android开发.iOS开发API及SDK,百度地图JavaScript API可帮助您在网站中构建功能丰富.交互性强的地图应用,本篇博客 ...
- 百度地图 判断marker是否在多边形内
昨天画了圆形,判marker是否存在圆形内.今天来画多边形,判断marker在多边形内. 需要引入一个js <script type="text/javascript&quo ...
- 百度地图自定义Marker
最近写了百度地图的Demo,所以总结下遇到的问题: 1.首先在百度地图中创建应用时用到 发布版SHA1是在Preferences下的Android下的Build中;2.在使用百度地图时,先要创建一个A ...
- 百度地图JavascriptApi Marker平滑移动及车头指向行径方向
相信只要是使用百度地图做实时定位服务的朋友都会遇到这个问题,在对坐标位置进行覆盖物展示的时候,会出现由于获取坐标数据时间或者两个坐标点相距过远,导致在视觉上看Marker移动就像"僵尸跳&q ...
- ArcGIS JS 学习笔记1 用ArcGIS JS 实现仿百度地图的距离量测和面积量测
一.开篇 在博客注册了三年,今天才决定写第一篇博客,警告自己不要懒!!! 二.关于ArcGIS JS 版本选择 在写这篇博客时ArcGIS JS 4.0正式版已经发布.它和3.x版本的不同是,Map不 ...
随机推荐
- Tomcat配置文件server.xml(转)
前言 Tomcat隶属于Apache基金会,是开源的轻量级Web应用服务器,使用非常广泛.server.xml是Tomcat中最重要的配置文件,server.xml的每一个元素都对应了Tomcat中的 ...
- Quartz.Net 使用心得(二)
工作中需要做一个简易的Cron字符串生成器,并且要获取生成的Cron后面10次的触发时间来验证. 此问题困扰了我很久时间,CSDN上有一个Java版本的,本人菜鸟,想移植到C#中,语法上怎么也不通过. ...
- 内核信号处理 & CPU8个通用寄存器
内核信号处理参考: http://www.spongeliu.com/165.html 信号本质上是在软件层次上对中断机制的一种模拟(注意区分中断.异常.信号),其主要有以下几种来源: 程序错误:除零 ...
- COCOS学习笔记--变速动作Speed和ActionEase
变速动作和复合动作类似.也是一种特殊的动作,它能够把不论什么动作依照改变后的速度运行.变速动作与复合动作最大的差别就是复合动作仅仅是单纯的组合一系列动作,而变速的做在组合一系列动作后还要去改变动作的运 ...
- Oracle移除表空间的数据文件 ora-00604 ora-01426
项目背景:在之前开发环境数据库管理比較乱,在表空间不足时仅仅是加入数据文件,測试完后数据己删除,但数据库表空间所占的空间不能回收,导致数据库的存储文件夹使用率达到97%以上实际使用仅仅有10%, ...
- BZOJ 1798: [Ahoi2009]Seq 维护序列seq (线段树乘法加法的混合操作)
题目:点击打开链接 大意:一个数组.三个操作.第一种是区间[a,b]每一个数乘乘,另外一种是区间[a,b]每一个数加c,第三种是查询[a,b]区间的和并对p取摸. 两种操作就不能简单的仅仅往下传 ...
- 为什么使用 use strict
进入标志: "use script"; 使用方式: 可以在 js 代码的第一行,也可以使用在函数中.但是写在 js 代码第一行不利于文件合并,因此可以写在一个自调用函数的第一行 使 ...
- 測试赛D - The War(有控制范围的贪心)
D - The War Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu Submit St ...
- python 文档生成 字符串替换
替换 fnr, fnr_source, fnw = 'my.py.html', '产品清单.txt', 'my.py.res.html'd_source = {}with open(fnr_sourc ...
- 第十四章 netlink机制--基于Linux3.10【转】
本文转载自:http://blog.csdn.net/shichaog/article/details/44682613 Netlink基于网络的消息机制,能够让用户和内核空间进行通信,12.3节提到 ...