欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

地图x中添加标注,文字随map缩放有关问题

更新时间: 2014-01-05 02:58:09 责任编辑: Author_N1

 

mapx中添加标注,文字随地图缩放问题。
我需要在显示的点旁边加上点的一些信息。用CreateText加上的文字,会随地图的缩放一起变化。
查了很多资料,好像用LabelProperties可以实现,但是我不知是哪里没弄对,文字就是不显示。
而网上的帖子大多语焉不详,搞定问题的LZ们也都是最后来一句“搞定了”,就啥也不说了。看得我郁闷死了。
请大家帮帮忙,教教我,最好给点代码。如果我最后搞定了,一定把代码贴出来以供参考。多谢。

--参考方法--
要创建一个不随地图缩放的文字。那么用临时层label应该是可以实现的

就是创建一个临时层,给该层设置一两个字段(比如id,name),在要创建文字的地方建立一个地图对象

然后给该对象赋值(例如,把文字内容 放到name字段中)

设置图层的label样式。

设置图层label显示。

==============================

以上是大致步骤,具体代码无法找到了

--参考方法--
好像需要建一个标注图层,具体操作不会,同在学习!
我也用的是Mapx Mobile5.05
--参考方法--
找了找没有找到能是使用的标注的代码,但是有一个思路。
那就是使用MapX的DrawUserLayer事件来自己绘制文字,这样做就自由多了。
MapX本身的CreateText创建图元以后 在放大缩小的时候实际上后续的处理就基本上个图片操作很相近了。
所以会有放大缩小时文字不能保持一定的大小了。

首先建立一个一个结构
struct Label
{
double x;  //x、y为标注的地理坐标
double y;
CString Tx;//标注的文字
};

然后利用这个结构建立一个数组 Label LB[100];(可以使用CArray等动态数组)

程序初始化的时候给 LB数组赋值 

在DrawUserLayer事件中

void C**::OnDrawUserLayerMap1(LPDISPATCH Layer, long hOutputDC, long hAttributeDC, LPDISPATCH RectFull, LPDISPATCH RectInvalid) 
{
CDC* pdc = mMapX.GetDC( );

float X[100];
float Y[100];

for( int i = 0; i< 100; i++ )
{
mMapX.ConvertCoord(   &X[ i ],   &Y[ i ], &LB[i]->x, &LB[i]->y, miMapToScreen ); 
pdc->TextOut( X[i],Y[i],LB[i]->Tx );
}
ReleaseDC( pdc );
}

创建用户图层就不多说了:
CMapXLayers allLr=mMapX.GetLayers(); //取得图层集合
CMapXLayer cusLr=allLr.AddUserDrawLayer("UsLayer",1);

--参考方法--
路过,友情帮顶了。。
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:58:09
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/16722/
本文WWW.DOC100.NET DOC100.NET版权所有。