前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Arcgis for javascript实现百度地图ABCD marker的效果

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

作者头像
牛老师讲GIS
发布于 2018-10-23 04:16:25
发布于 2018-10-23 04:16:25
97400
代码可运行
举报
运行总次数:0
代码可运行

概述:

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

相关文章地址:

http://blog.csdn.net/gisshixisheng/article/details/39577817

实现后效果:

为直观期间,先贴出来我做的效果

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

显示信息

实现思路:

1、列表与地图的互动

鼠标经过列表时,修改列表图标,并根据列表返回的值在地图上绘蓝色的marker;鼠标移出,修改列表图标为红色,清空地图marker图层。

关键代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                            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为红色。

关键代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
                        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形式存在。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        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年被国务院确定为西南地区的科技、商贸、金融中心和交通、通讯枢纽。"
            }
        ];

完整代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!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>
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015年09月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
JAVA以UTF-8导出CSV文件,用excel打开产生乱码的解决方法
1OutputStreamWriter osw = newOutputStreamWriter(resp.getOutputStream(), "UTF-8"); 
felixxue
2022/12/29
2K0
java怎么解决导出csv文件乱码
将查询的数据以xls文件导出时(UTF-8编码),数据正常;但以CSV文件导出时,文件中的中文乱码,同样是UTF-8编码,改成GBK编码导出时,中文显示正常。
Java架构师必看
2021/12/21
4.7K0
csv文件乱码
问题描述: 生成的csv文件,设置为UTF-8格式,在windows上用EXCEL打开的话会乱码,在linux上用vim或者cat打开查看正常;设置为GBK格式的话,在windows上用EXCEL打开正常,但在linux上乱码 解决方法: 在csv文件头部的最前面加bom BOM(Byte Order Mark),是 UTF编码方案里用于标识编码的标准标记,在 UTF-16里本来是 FF FE,变成 UTF-8就成了 EF BB BF。这个标记是可选的,因为 UTF8字节没有顺序,所以它可以被用来检测一个字
千往
2018/01/24
2.9K0
csv文件导出注意事项
默认情况下,在windows上用excel打开csv文件时,并不是按utf-8码解析的,就算代码里设置了写入字符串为utf-8字符集,也可能乱码。
菩提树下的杨过
2020/06/24
1.5K0
Java杂谈之BOM谜题
开发中做了一个导出CSV功能,本地通过wps测试都没有问题,但是测试人员测试的时候发现用excel打开中文表头会出现乱码现象,很奇怪的现象,用nodePad工具打开看也是正常的,但是用excel打开就是中文乱码,通过查找资料了解到是因为csv文件是utf-8编码的,但是没有增加bom头,这样就会导致在window环境下一些软件会用默认编码打开文件从而导致乱码问题,本文详细介绍从前端下载、后端读写如何解决该问题。
你呀不牛
2021/05/28
1.7K0
我也太牛了,解决了浏览器中,前台导出csv格式,UTF-8编码,且excek打开不乱码!
ExcellentExport.js的方法,利用base64下载文件。支持chrome ,opera,firefox. 于是决定拿来为我所用!
申君健
2018/09/21
5.1K0
WEB:字符集、编码、乱码 —— 看这篇就够了
ASCII(美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,是现今最通用的单字节编码系统。
WEBJ2EE
2019/07/19
4.3K0
WEB:字符集、编码、乱码 —— 看这篇就够了
C#自动识别文件编码
在做导入微信商户后台退款数据时,无论怎么设置编码导出来都是乱码,后来在网上找了这个识别文件编码的代码,感觉不错。 最后识别出来是gb2312,看来我还是太渣了,只能吃土了,竟然忘记了这个编码。 下面,上代码。 1 /// <summary> 2 /// 用于取得一个文本文件的编码方式(Encoding)。 3 /// </summary> 4 public class TxtFileEncoder 5 { 6 pub
晓晨
2018/06/22
2.2K0
PHP file_get_contents 中文乱码解决方案记录
最近拉取了京东结算订单csv文件,结果发现在用file_get_contents获取内容的时候,中文出现了乱码,感觉京东这么大,这个技术问题他们帮忙解决才好吧,想想还是算了,自己动动手的问题。
猿哥
2019/08/06
3.6K0
PHP file_get_contents 中文乱码解决方案记录
win10 uwp 读取文本GBK错误
本文讲的是解决UWP文本GBK打开乱码错误,如何去读取GBK,包括网页GBK。最后本文给出一个方法追加文本。
林德熙
2018/09/18
1.4K0
把一个txt文件转化为带标题栏的Excel文档
public class Export { public static final String CSVNAME_COMPETITION="cpc.csv"; } public class CSV { public static final String ENDLINE = "\n"; public static final Map<String,String> HEADLINES=new HashMap<String,String>(); static{ //分别是Excel文档的第
用户5166556
2019/04/16
7550
[精选] PHP如何快速导出 百万级数据 到EXCEL
很多时候,因为数据统计,我们需要将数据库的数据导出到Excel等文件中,以供数据人员进行查看,如果数据集不大,其实很容易;但是如果对于大数集的导出,将要考虑各种性能的问题,这里以导出数据库一百万条数据为例,导出时间不过20秒,值得学习的一种大数据导出方式。
码农编程进阶笔记
2022/05/24
2K0
解释BOM头和去掉方法
类似WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。对于一般的文件,这样并不会产生什么麻烦。但对于 PHP来说,BOM是个大麻烦。
用户7657330
2020/08/14
1.1K0
java中IO写文件工具类
下面是一些根据常用java类进行组装的对文件进行操作的类,平时,我更喜欢使用Jodd.io中提供的一些对文件的操作类,里面的方法写的简单易懂。 其中jodd中提供的JavaUtil类中提供的方法足够我们使用,里面的方法写的非常简练,例如append,read等方法,封装更好,更符合面向对象, 这里面我写的一些方法可多都是模仿jodd,从里面进行抽取出来的。 /** * 获取路径文件夹下的所有文件 * @param path * @return */ public static Fi
用户5166556
2019/04/16
8750
Java进阶-IO(2)
话接上回,继续java IO部分的学习。上一次说完了字节流的读写数据,这次介绍一下字符流的读写数据。
reload
2024/03/03
2120
PHP Bom头导致乱码或者其他错误
转载至:https://www.cnblogs.com/wt645631686/p/6868826.html
黄啊码
2020/05/29
1.1K0
Java基础-21(01)总结字符流,IO流编码问题,实用案例必做一遍
1:字符流(掌握) // 字节流读取中文可能出现的小问题(所以用字符流输入输出中文) package cn.itcast_01; import java.io.FileInputStream; import java.io.IOException; /* * 字节流读取中文可能出现的小问题: */ public class FileInputStreamDemo { public static void main(String[] args) throws IOException { // 创建字
Java帮帮
2018/03/16
1.2K0
java基础io流——字符流的变革(深入浅出)
在io流里,先诞生了字节流,但是字节流读取数据会有乱码的问题(读中文会乱码)。比如:
100000860378
2018/09/13
5200
java基础io流——字符流的变革(深入浅出)
转换流实现了字节流和字符流之间的互相转换_java输出流输出文件
转换流也是继承自超类Writer,因此可以使用Writer中的共性方法:write(int c),write(char[] ch),…,flash(),close(),…
全栈程序员站长
2022/10/03
4280
转换流实现了字节流和字符流之间的互相转换_java输出流输出文件
&#65279导致页面顶部空白一行解决方法
模板文件生成html文件之后会在body开头处加入一个可见的控制符&#65279,导致页面头部会出现一个空白行。原因是页面的编码是UTF-8 + BOM。
OECOM
2020/07/01
1K0
推荐阅读
相关推荐
JAVA以UTF-8导出CSV文件,用excel打开产生乱码的解决方法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验