在上一篇中实现一个icon + label的Marker需要使用两个Tangram的Marker, 今天分析了Tangram的源码后, 发现Tangram时支持单一Marker同时显示的, 这需要使用嵌套的Style。

上一篇使用的Style是两个:

 style: points,
color: white,
size: [32px, 32px],
order: 100,
collide: false

text:
text_source: function(){ return "label"},
priority: 100

但其实points style支持text属性, 两个合并后变成:

style: points,
color: white,
size: [32px, 32px],
order: 100,
collide: false,
text:
text_source: 'function(){ return \"Title\"}',
priority: 100

代码如下

void MarkerImpl::createMarker(const std::string &iconURI, const std::string &title)
{
QImage img(QString(iconURI.c_str()));
int width = img.width();
int height = img.height();
auto argb = new unsigned int [width * height];
for(int h=height-; h>-; --h){
for(int w=; w<width; ++w){
int pix = img.pixelColor(w, h).rgba();
int pb = (pix >> ) & 0xff;
int pr = (pix << ) & 0x00ff0000;
int pix1 = (pix & 0xff00ff00) | pr | pb;
argb[w + h*width] = pix1;
}
}
m_map->markerSetBitmap(m_ID, width, height, argb);
delete[] argb; static const char* MARKER_STYLE_TEMPLATE =
"{ style: 'points',"
" color: 'white',"
" size: [%1px, %2px],"
" order: 100,"
" collide: false,"
" text: {"
" text_source: 'function(){ return \"%3\"}',"
" priority: 100 } }";
QString iconStyle = QString(MARKER_STYLE_TEMPLATE).arg(width).arg(height).arg(title.c_str());
m_map->markerSetStyling(m_ID, iconStyle.toStdString().c_str());
}

这里使用了单行YAML的写法, 详见http://baike.baidu.com/link?url=oZjxiBc2gjv6W4Kx3UpMIjzsBhmmY2MJ9VayYJx-1qAZZiN_R16J2H8mMXH0j2a-eYwjiOI5zkKcy1ehSF8WIK#2_2

最新文章

  1. javascript动画系列第四篇——拖拽改变元素大小
  2. Zookeeper 3.4.6 Client端流程粗略梳理
  3. 字符截取 支持UTF8/GBK
  4. VC创建预编译文件
  5. 《Java核心技术卷二》笔记(一)流与文件
  6. DTcms手机版使用余额支付 提示信息跳转到PC版的错误。以及提交订单不打开新页面
  7. paip.mysql备份慢的解决
  8. MySQL中char、varchar和text的区别
  9. 关于fsockopen pfsockopen函数被禁用的解决方法
  10. token 入门教程
  11. idea为tomcat设置虚拟地址
  12. string find()函数
  13. Mxd文档更新比例尺
  14. Linux命令-基本变量类型及其运算
  15. POJ 2503 Babelfish (STL)
  16. HTMLParser 笔记
  17. 确保线程安全下使用Queue的Enqueue和Dequeue
  18. Xamarin iOS教程之警告视图
  19. jmeter,测登录,要不要过滤掉JS,CSS等请求?感觉过滤掉了压出来的数据就不真实?
  20. rocket-console控制台安装

热门文章

  1. 一个Highcharts的例子
  2. c++ 标准委员会网址
  3. [HDOJ 5212] [BestCoder Round#39] Code 【0.0】
  4. Json字符串转换为java对象的各种实现方法【json_lib框架、Gson、org.json】
  5. SPRING IN ACTION 第4版笔记-第三章Advancing wiring-001-DataSource在应用和开发环境之间切换 profile
  6. 最简单的CRC32源码-查表法
  7. 【简译】Windows 线程基础
  8. Deep Learning论文笔记之(八)Deep Learning最新综述
  9. CF 370
  10. bzoj1237