在js版搜狗地图上添加brand标牌

在上一篇博文中,我在搜狗地图上添加了Marker标记,但是在用户体验度上还是不够的,如果想了解某些信息,你得把鼠标指向marker,才能看到title里的值。有没有一种可以直接显示在marker上的东东呢?

其实有很多方法可以做到。搜狗地图提供了叠加层类,但是可以直接在页面上显示信息的,貌似只有InfoWindow、Label和Brand。一般InfoWindow是用来显示大量信息的。所以我们显示少量信息一般选用Label和Brand。但是Label显示的效果比较一般,四棱四角的,而Brand则是圆角矩形。所以我还是推荐使用Brand。当然这两个都是支持css的,如果你css技术过硬,也可以把Label整得跟Brand一样。

今天我就与大家分享一下在js版搜狗地图上,添加Brand标牌。

首先给大家一个官网的示例代码:点这里进入查看。我也先贴出我的代码来,让大家一睹为快吧:

首先定义一个brand数组,来记录所有景点的brand信息。

  var brands = [];//记录所有景点的Brand信息

然后添加一个js function,来为所有景点设置一个Brand。

  //加载标记牌
  function addbrand(){
    for(var i=0;i<p.length;i++){
      var brand = new sogou.maps.Brand({
	        position: new sogou.maps.Point(p[i].x,p[i].y),
	        map: map,
	        spirit:
          {
            url:"http://api.go2map.com/maps/images/v2.5/2.png",
            imgSize:[140,77],
            //[[左侧],[中间],[右侧],[尖脚]]
            //[clipLeft,clipTop,width,heigth]
            clips:[[0,0,8,51],[8,0,1,51],[132,0,8,51],[0,53,33,23]],
            //[尖脚绑定坐标的位置]
            anchor:[16,23],
            //尖脚微调偏移
            footOffset:[0,-3]
          }
	        ,content:p[i].title+"<br /> 城市:北京市"
	        //是否可见,可缺省,缺省为true
	        ,visible:true
	        //指定内容区固定宽度为80,如果不指定,则会根据内容大小自动适应
	       	//,fixSize:new sogou.maps.Size(80,0)
	        //指定css,css要在样式表事先定义好
	        ,css:"brand"
	    });
	    brands.push(brand);//将生成的brand,加入到brands数组中
		//侦听对象是brand本身
	    //sogou.maps.event.addListener(brand,"mouseover",function()
	    //{
	        //alert("发生mouseover事件,划过了"+this.getContent())
	    //});
 	}
    //侦听对象是map,只侦听一次即可
    //sogou.maps.event.addListener(map,"brandclick",function(brand)
    //{
    //    alert("发生brandclick事件,点击了"+brand.getContent())
    //});
  }

最后修改initialize方法,把刚写的js方法添加到这里面:

  //初始化数据
  function initialize() {
    //此处省略以前的代码...

    //加载景点标记
    addmarker();

    //添加景点标牌
    addbrand();

  }

代码都有了,样式信息肯定是少不了的。在style中添加样式:

.brand{font-size:12px;color:#fff;white-space:nowrap;margin:12px 0 0;}

效果图如下:

效果看起来还不错吧。当然标牌之间有点项目遮挡,这个问题后面再解决。现在我来解释一下这段代码吧。

想要创建Brand对象,请看官网说明。在构建Brand的时候,需要指定position,这个就是地图坐标,可以是搜狗地图坐标或者经纬度坐标。我的代码中把position设定成了每个景点的坐标。map就是当前创建的地图对象。content则是显示内容。css定义标牌中文本的样式的css
class。spirit则是这个标牌所用到的背景图片。如果你不设定fixSize,那么这个brand会根据内容长度自动加长。是不是很贴心呀。快来试试吧。

下一篇博文,我们要解决一下brand项目遮挡问题。如果有心的朋友可能已经发现了,我们要从spirit下手。敬请期待吧。

时间: 2024-12-11 06:01:49

在js版搜狗地图上添加brand标牌的相关文章

在js版搜索地图上添加标记

由于我们做的是有关于旅游方面的项目,所以涉及到了地图功能.我接到的其中一个任务就是,在地图上显示指定的几个景点,并在地图上加上标记. 我们项目用的是搜狗地图,使用的是js版本.大家有兴趣的话,可以参考搜索地图api以及示例代码. 在地图上添加标记是地图的一个基本功能.这个标记叫做Marker.可以从这里看官网上对于Marker类的介绍. 实现的基本步骤,首先在页面上创建一个地图,然后地图上添加一个marker.你可以对这个marker指定位置.显示内容,在地图上的显隐等.具体请看一下代码: <h

GIS(四)——为js版搜狗地图添加边界+Marker和Brand的最终美化版

在<GIS(三)--优化js版搜狗地图的brand标牌样式>中,分享了一下Brand样式的修改.现在把这几次Marker和Brand的修改统一再美化一下,算作一个终极优化版吧. 这次优化的主要内容是: 为整个操作的区域,添加边界 为Marker更换动态图片 为Brand更换半透明红色图片 只显示一个Brand,每3秒切换一次 1.绘制边界 首先做第一个吧,在搜狗地图上添加边界,是一个很简单的.很基本的,但是又很人性化的一个功能.在官网的实例代码中,覆盖层的第21个示例代码<画多边形区域.

GIS(六)——实现js版搜狗地图周边搜索功能

在上一篇文章<GIS(五)--完成js版搜狗地图基本交互搜索功能>中,介绍了搜狗地图的关键字搜索功能,今天就实现以下另一个重要功能吧--那就是周边搜索功能. 按照惯例,还是把官网上的示例代码给大家贴出来.飞机票在此.周边搜索的功能,跟关键字搜索其实是一样的,也是主要用到的了SearchRequest这个类,点击这里查看api文档.SearchRequest 对象规范: 属性 类型 说明 map Map 进行搜索的地图实例 renderer SearchRenderer 将结果进行渲染的对象.也

优化js版搜狗地图的brand标牌样式

从上一篇博文的效果图中,我们看到有几个相近的brand标牌给相互遮挡住了,不能完整的显示.怎么处理一下呢?今天我们就来研究一下这个解决方案. 其实要想不被遮挡,可以让这几个brand位置变动一下,而不总是箭头向下指向景点.如果改变箭头的指向呢?首先我们要了解它原本是怎么处理的.这个肯定是从spirit入手了. 先说一下spirit的参数: { url:"http://api.go2map.com/maps/images/v2.5/2.png", imgSize:[140,77], //

GIS(七)——js版搜狗地图搜索功能美化版

在前2篇文章中介绍了关键字搜索和周边搜索的功能,但是界面比较简陋,所以这一版我主要做一些美化工作. 这次主要优化的方面有2个方面,一个是页面的样式,包括字体.按钮.布局等:二是要添加一个搜索的智能提示. 首先修改页面的样式,更改 #map{position:absolute;width:1364px; height:550px;} #option{ height:50px; width:1336px; border:solid 1px #CCCCCC; padding:10px; } 添加两个c

GIS(五)——完成js版搜狗地图基本交互搜索功能

最近在做的有关于北京海淀智慧旅游的一个项目,既然是旅游项目,那么涉及到地图的操作也就是必然的事情了.前几篇文章,主要是分享了在地图上标记多个景点及其景点信息的技术.其实跟项目中还是有一些不一样的.项目中要求实时显示景点的信息,根据实时数据,更新Marker的颜色(绿.橙.红),以及实时更新景点Brand上的景点信息(游客流量.舒适度).这些都没有出现在文章中,文章只是从技术的角度来验证的. 今天主要要做的是地图上的一个基本功能--交互搜索. 其实官网上搜索的例子并不是很多,而且真的不怎么滴.不过

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

因为我们做的是有关于旅游方面的项目,所以涉及到了地图功能.我接到的当中一个任务就是,在地图上显示指定的几个景点,并在地图上加上标记. 我们项目用的是搜狗地图.使用的是js版本号.大家有兴趣的话,能够參考搜索地图api以及演示样例代码. 在地图上加入标记是地图的一个基本功能.这个标记叫做Marker.能够从这里看官网上对于Marker类的介绍. 实现的基本步骤,首先在页面上创建一个地图.然后地图上加入一个marker.你能够对这个marker指定位置.显示内容,在地图上的显隐等. 详细请看一下代码

google maps js v3 api教程(2) -- 在地图上添加标记

原文链接 google maps javascript官方文档:https://developers.google.com/maps/documentation/javascript/ 我们在创建地图之后,怎么往地图上添加标记呢? google为我们提供了google.maps.Marker这个构造函数,来创建标记. 这个函数有一个object类型的可选参数,常用的成员有: { position: new google.maps.LatLng(lat,lng), //标记的经纬度 map:map

在地图上添加POI

使用Tangram的Marker, 可以在地图上做各种标记, 效果图: Tangram是通过Marker在地图上添加标记的,Marker分Point, Polyline和Polygon三种, 分别对应点.线.面三种几何体. Tangram使用统一的Marker接口来管理Marker: namespace Tangram { class Map { public: // Add a marker object to the map and return an ID for it; an ID of