腾讯地图圆形覆盖物添加移除以及标注偏移问题总结

最近在用腾讯地图的api,对遇到的问题和解决方法做个总结(可能有不正确的地方)

1.初始化地图

// 地图 定义可能要用到的标注,圆形覆盖物等,由于多个,所以都用数组
var searchService,markers = [],lables = [],markerIndex=0,map,circles = [];//初始化地图函数  自定义函数名init
function initMap(con) {
    //定义map变量 调用 qq.maps.Map() 构造函数   获取地图显示容器
    map = new qq.maps.Map(document.getElementById(con), {
        center: new qq.maps.LatLng(39.916527,116.397128),
        zoom:13
    });
    //调用Poi检索类
    searchService = new qq.maps.SearchService({
         map:map
     });
         .....}  

2.添加圆形覆盖物

           ...

//处于循环中,每个center0的数据从后台来
var center0=new qq.maps.LatLng(xxx,yyy);map.setCenter(center0);
//设置圆形覆盖物的颜色和透明度rgba
var circle_color = new qq.maps.Color(
      Number(colorarr[0]),
      Number(colorarr[1]),
      Number(colorarr[2]),
     alpha);
//给地图添加圆形覆盖物
 var circle = new qq.maps.Circle({
       center:center0,
       radius:radius,
      //边框大小
       strokeWeight:0,
     //填充颜色
       fillColor:circle_color,
      //放置到哪个地图中
       map: map
 });
//添加到circles数组中,以便后续操作
circles.push(circle);

         ...

3.添加标注marker

          ...

//处于循环中,每个center0的数据从后台来
var center0=new qq.maps.LatLng(xxx,yyy);map.setCenter(center0);
//设置标注的样式
var anchor = new qq.maps.Point(16, 40),
      size = new qq.maps.Size(35, 40),
      origin = new qq.maps.Point(0, 0),
      icon = new qq.maps.MarkerImage(‘img/xxx.png‘, size, origin, anchor);
//给地图添加标注
var marker0 = new qq.maps.Marker({
       position:center0,
       icon: icon,
       map: map,
});
//添加标注到数组中,以便后续操作
markers.push(marker0);

         ...

4.添加文本标注

          ...

//处于循环中,每个center0的数据从后台来
var center0=new qq.maps.LatLng(xxx,yyy);
map.setCenter(center0);
//设置标注的样式
var cssC = {
       fontSize:"14px",
       borderRadius: "20px",
       border: 0,
       padding: "5px 10px 5px 40px",
       boxShadow:"1px 1px 3px #ccc",
};
//给地图添加文本标注
var label = new qq.maps.Label({
      position: center0,
      offset: new qq.maps.Size(-13, -35),
      map: map,
      content:"xxx"
});

//添加样式
label.setStyle(cssC);
//添加到数组中
lables.push(label);

         ...

5.删除覆盖物(圆形覆盖物,标注,文本标注)

//清除覆盖物的函数
function clearOverlays(overlays) {
      var overlay;
      while (overlay = overlays.pop()) {
             overlay.setMap(null);
      }
}
...
//使用的时候调用
clearOverlays(circles);
clearOverlays(markers);
clearOverlays(lables);

//如果是清除单个覆盖物
circle.setMap(null);
lable.setMap(null);
maker.setMap(null);

//如果是添加单个覆盖物
circle.setMap(map);
lable.setMap(map);
maker.setMap(map);

6.关于缩放地图时,标注的位置偏移圆形覆盖物的问题

//在你设置marker时,设置anchor就好了
//首先你要知道你使用的marker的图片大小,比如32x40
//那么设置anchor(宽度的一半,高度)
var anchor = new qq.maps.Point(16, 40);

//由于图形标注变化了,那么文本标注的位置也要改动
//修改label中的offset值,这个值根据自己需求改动
//offset: 相对于position位置偏移值,x方向向右偏移为正值,y方向向下偏移为正值,反之为负。
offset: new qq.maps.Size(xx, yy)
时间: 2024-10-11 20:24:37

腾讯地图圆形覆盖物添加移除以及标注偏移问题总结的相关文章

如何在百度地图、腾讯地图标注公司地址信息?

比如百度地图.腾讯地图.高德地图是可以标注公司位置的,不一定是店铺.所以我们有机会把公司地址在地图里标注出来,这样以后客户拜访时就会非常方便.我们遇到很多朋友都是花了几百块钱做地图标注,实际上这一切都是免费的. 首先,我们来看看地图标注效果. 微信应用场景案例展示(手机QQ相同) 百度地图应用场景 以上为各个应用场景案例(以卢松松公司为例),实际上在地图上提交并不是什么难事,只要按照要求提交相应资料就可以了. 其次,我们来看看怎么操作. 在做地图标注前,先准备好以下资料: 1,公司营业执照电子版

百度地图之地址解析和浏览器定位以及添加可拖拽标注

这里的百度地图demo包括了常见的:地址解析.浏览器定位.IP定位.可拖拽标注 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"/> <script type="tex

百度地图简单使用——添加折线,圆形等(html,js)

地图覆盖物概述 所有叠加或覆盖到地图的内容,我们统称为地图覆盖物.如标注.矢量图形元素(包括:折线和多边形和圆).信息窗口等.覆盖物拥有自己的地理坐标,当您拖动或缩放地图时,它们会相应的移动. 地图API提供了如下几种覆盖物: Overlay:覆盖物的抽象基类,所有的覆盖物均继承此类的方法. Marker:标注表示地图上的点,可自定义标注的图标. Label:表示地图上的文本标注,您可以自定义标注的文本内容. Polyline:表示地图上的折线. Polygon:表示地图上的多边形.多边形类似于

【百度地图API】如何给自定义覆盖物添加事件

http://www.cnblogs.com/milkmap/archive/2011/10/20/2219149.html 摘要: 给marker.lable.circle等Overlay添加事件很简单,直接addEventListener即可.那么,自定义覆盖物的事件应该如何添加呢?我们一起来看一看~ ----------------------------------------------------------------------------------------- 一.定义构造

Xamarin.Forms 调用 腾讯地图SDK

Xamarin.Forms研究了好一段时间了,最近一直在学习中,想尝试一下调用其他的SDK,就如腾讯地图SDK(申请容易). 完成此次项目得感谢以下链接: http://www.cnblogs.com/jtang/p/4698496.html 其他文档参考: 腾讯地图SDK(安卓)文档 这里面有详细的使用过程(当然里面的代码是不适用C#的,不过要从这里下载SDK,也有如何申请Key的过程,请参考阅读) Xamarin.Forms自定义每个平台的控件文档 里面有如何根据不同的平台条件下,调用其他页

Android应用中使用百度地图API并添加标注(一)

网上一些资料这种的内容已经过时了,这里是最新的内容,如果哪里不对,请吐槽... 1)下载百度地图移动版API(Android)开发包 要在Android应用中使用百度地图API,就需要在工程中引用百度地图API开发包,这个开发包包含两个文件: 下载地址:http://pan.baidu.com/s/1i31enrB 2)申请API Key //包名 格式:例如:B7:6C:CF:E2:47:50:9B:3E:34:F7:08:72:F3:AC:F1:BE:55:D3:77:FB;com.maji

腾讯地图API简介、整理

目录 腾讯地图API 1 1.API概览... 1 1.1 WebService API(官网注明是beta版本,可能不稳定,慎用):... 1 1.2 URL API:... 2 1.3 静态图API:... 2 1.3 JavaScript API V2:... 2 1.4 另外还有Android SDK, Android 定位SDK,和IOS SDK,主要用于手机端开发.     2 2. 下面重点讲解JavaScript API V2:... 2 2.1最简单的地图-显示一张以坐标为中心

腾讯地图笔记

首先是js的引用 <script charset="utf-8" src="http://map.qq.com/api/js?v=2.exp&key=YOUR_KEY"></script> 腾讯地图js除了提供基本的功能库外,还提供了一些有用的附加库,下面这个是引用了坐标转换库的js引用 <script type="text/javascript" charset="utf-8" src=

腾讯地图定位

<div class="c">@Html.TextBoxFor(u => u.Address, new { @class = "text01", onchange = "changeAddress()", style = "margin:10px 0;" })经度@Html.TextBoxFor(u => u.Longitude, new { @class = "text05" })