osgearth_cluster--集群节点(合并显示)

当缩放地球时,许多节点会重合在一起,这时候可以用 ClusterNode将节点合并显示,ClusterNode可以设置图标、名字和描述;
代码如下,为osgearth_cluster中的代码:

   		MapNode* mapNode = MapNode::findMapNode(node);
        osg::NodeList nodes;

        GeoExtent extent(SpatialReference::create("wgs84"), -160.697021484375, 18.208480196039883, -153.951416015625, 22.978623970384913);
		//创建10000个节点在规定区域内
        makeModels(mapNode, 10000, extent, nodes);
		// ClusterNode将重叠的节点聚集到屏幕上的PlaceNode中,以避免视觉混乱并提高性能
        ClusterNode* clusterNode = new ClusterNode(mapNode, osgDB::readImageFile("../data/placemark32.png"));
        clusterNode->setStyleCallback(new StyleByNameCallback());//设置样式回调(根据第一个节点来显示对应的图标)
        clusterNode->setCanClusterCallback(new ClusterByNameCallback());//设置集群回调(相同名字的放一起,不然的话半径内都会合并)
        for (unsigned int i = 0; i < nodes.size(); i++)
        {
            clusterNode->addNode(nodes[i].get());//将节点放入集群节点中,里面的节点会根据距离分离
        }
        mapNode->addChild(clusterNode);
		// _clusterNode->setRadius(value);设置半径
        buildControls(container, clusterNode, mapNode);

当ClusterNode中包含的节点距离小于设置的半径时,就会合并成一个节点,当视点距离小于半径时,就会自动分开显示实际节点;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值