(POI, Point of Interest)可以包括多个文字,每个文字的字模即为文字的属性信息,包括该文字的宽度、高度、占用内存、该文字的内容等信息。具体的,可以采用Freetype技术生成每一个字的字模。
[0064]步骤203、按预设的排版规则及该文字串中文字的排列顺序,对所述每一个字的字模进行排版,得到该文字串的字模。
[0065]本步骤203中,该预设的排版规则可以根据实际需要进行灵活设置,例如:该预设的排版规则可以为换行规则。当POI文字串的文字字数较多时,如果在一行内将所有文字全部显示,可能会占用到其他POI所在的位置上,因此可以将该POI文字串的文字分多行进行排列,例如,POI文字串包括的文字为“高德信息技术有限公司”,共10个文字,可以将这10个字分为两行,第一行为“高德信息技术有”,第二行为“限公司”,以免该POI包括的文字占用区域的长度过长,避免与其他POI文字重叠。每一行的字数可以根据实际需要进行预先设置,例如:可以设置每一行的字数为7,该设置主要是避免在电子地图上显示的POI文字出现重叠。
[0066]步骤204、根据该文字串的字模的属性信息,生成该文字串的纹理。
[0067]本步骤204中,文字串的字模的属性信息为该文字串中的每一个字的字模在按照预设的排版规则排列后,占用总区域的宽度、高度、在电子地图上的经纬度坐标,该POI文字串的ID、该POI文字串中的文字字号,其中,根据该POI文字串的每一个文字的字模,将排列后的该POI包括的文字占用总区域的宽度、高度,作为该POI文字串的宽度、高度。该POI的文字串字模的属性还可以包括对该文字串中文字的描边信息,例如对文字串中的每一个文字的边缘分别添加边框。
[0068]具体的,可以使用预设渲染接口调用与表示POI文字串的字模的属性信息对应的图形生成该POI的文字串纹理。其中,预设渲染接口可以为渲染引擎中的0PENGL(0penGraphics Library,—种专业的图形程序接口),也可以为现有技术中渲染引擎的其他编程接口。例如:可以使用OPENGL调用图形库中的与该POI的文字串属性对应的图形生成该POI的文字串纹理。OPENGL绘制一块大纹理会比绘制多块小纹理速度快很多。
[0069]步骤205、根据所述文字串的纹理,在所述兴趣点在电子地图对应位置处绘制所述兴趣点的对应的文字串。
[0070]本步骤205中,可以将该POI文字串的字模占用总区域的顶点坐标分别转换为屏幕坐标,得到该POI的文字串占用区域对应的屏幕坐标。
[0071]具体的,POI文字串字模的属性信息中,在电子地图上的经纬度坐标,可以在实际采集该POI信息时获取并进行保存,例如,某POI为“B大厦”,该B大厦的经纬度坐标可以是外业人员到实际地点采集的该B大厦的经纬度坐标。
[0072]进一步的,POI的经纬度坐标还可以在生成该POI文字串的字模的属性信息后,读取该POI的经纬度坐标,将该经纬度坐标和该POI文字串的字模的属性信息共同存储在用于存储文字串的字模的属性的缓存中。
[0073]优选的,当生成该POI的文字串纹理后,可以将该POI的文字串纹理缓存至文字串纹理缓存空间,以便当该当前帧后面的帧图像中包括该POI时,无需重复生成该POI的文字串纹理,直接从文字串纹理缓存空间中提取该POI的文字串纹理进行绘制即可,提高了文字渲染速度,减少了 CPU的占用资源,从而提高了文字渲染效率,并降低了 CPU占用率。对生成的该POI的文字串纹理具体按照如下步骤206-步骤205进行缓存处理。
[0074]步骤206、确定文字串纹理缓存空间是否已满,如果是,进入步骤207,如果否,进入步骤208。
[0075]步骤207、当该文字串纹理缓存空间已满时,删除该文字串纹理缓存空间中缓存满足预置的失效条件的兴趣点的文字串的纹理,并将生成的该POI的文字串纹理存入该缓存。
[0076]具体的,预置的失效条件可以根据实际情况进行灵活设置,例如:可以将最早存入该缓存的POI的文字串纹理删除。
[0077]步骤208、当该文字串纹理缓存空间未满时,将生成的该POI的文字串纹理存入该文字串纹理缓存空间。
[0078]步骤209、当文字串纹理缓存空间中存在该POI对应的文字串纹理时,读取该文字串纹理缓存空间中缓存的该POI对应的文字串的纹理,并根据该POI的文字串纹理,在该POI对应的屏幕位置处绘制该POI的文字。
[0079]本步骤中,该POI对应的屏幕坐标可以采用步骤205相同的处理方式,在此不再进行详细描述。
[0080]进一步的,为了支持不同比例尺下同一个POI可以有不同的字号,该文字串纹理缓存空间中还可以存储该POI文字串的文字字号。而在同一个比例尺下,由于POI的字号相同并已对该POI属性信息生成了纹理,在三维视觉下,为了实现近大远小效果,根据预设的缩放比例,绘制该POI时可对该POI纹理按照比例进行缩放,从而达到近大远小效果,该预设的缩放比例可以根据与用户当前位置距离的远近进行灵活设置,例如:距离用户当前位置越远,预设的缩放比例越小。
[0081]通过本发明上述实施例1提供的方法,由于对POI文字串生成文字串字模,针对该文字串字模的属性信息一次生成该POI的文字串纹理,并对该POI的文字串纹理一次进行绘制,无需对该POI的每一个文字分别生成各文字对应的的文字纹理,也无需对每个字的文字纹理分别进行绘制,提高了文字渲染的速度,节省了文字渲染时间和CPU资源,从而提高了文字渲染效率,降低了 CPU占用率。并且,通过将生成的POI的文字串纹理保存到文字串纹理缓存空间中,当渲染下一帧电子地图中的POI文字串存在与当前显示电子地图中相同的POI文字串时,不需要重新生成该POI文字串的文字串纹理,只需在保存文字串纹理来的缓存中直接查找即可,提高了文字渲染速度,节省了文字渲染时间和CPU资源。
[0082]实施例3:
[0083]基于同一发明构思,根据本发明上述实施例提供的电子地图的文字渲染方法,相应地,本发明实施例3还提供了电子地图的文字渲染装置,其结构示意图如图3所示,具体包括:
[0084]第一生成单元301,用于生成兴趣点对应的文字串中每一个字的字模;
[0085]排版单元302,用于按预设的排版规则及所述文字串中文字的排列顺序,对所述每一个字的字模进行排版,得到所述文字串的字模;
[0086]第二生成单元303,用于根据所述文字串的字模的属性信息,生成所述文字串的纹理;
[0087]绘制单元304,用于根据所述文字串的纹理,在所述兴趣点在电子地图对应位置处绘制所述兴趣点的对应的文字串。
[0088]进一步的,上述方法,还包括:
[0089]第一判断单元305,用于判断文字串纹理缓存空间是否缓存了所述兴趣点对应的文字串的纹理,如果缓存了,则读取所述文字串纹理缓存空间中缓存的所述兴趣点对应的文字串的纹理,触发绘制单元根据所述文字串的纹理,在所述兴趣点在电子地图对应位置处