[发明专利]一种基于SVG的Google用户地图文本标注方法有效
| 申请号: | 201410191069.7 | 申请日: | 2014-04-29 |
| 公开(公告)号: | CN103970859B | 公开(公告)日: | 2017-04-19 |
| 发明(设计)人: | 杨立法 | 申请(专利权)人: | 杨立法 |
| 主分类号: | G06F17/30 | 分类号: | G06F17/30 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 710121 陕西省*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 基于 svg google 用户 地图 文本 标注 方法 | ||
技术领域
本发明属于计算机技术领域,涉及一种基于SVG的Google用户地图文本标注方法。
背景技术
地图上没有文字是很难理解的,每个地图元素都需要文字注解。传统GIS(Geographic Information System,地理信息系统)软件,如ArcGIS、Maplnfo等本身具有丰富的文本标注自动生成功能,在二次开发建立应用系统时无需考虑标注问题。但近年来随着Google地图的广泛应用,越来越多的用户希望将应用建立在Google地图上。Google Maps API V3是建立Google地图应用系统的基本工具,提供了诸多地图绘制功能,但缺少相应的文本标注功能。
针对标注问题,Google提供了几种解决方案,即利用Marker符号(默认或自定义符号)、弹出式Info window窗口和自定义叠加层。前两种方案根本无法产生类似Google基础地图那样的标注效果。相比之下,自定义叠加层具有较大灵活性,且Google在其实用程序库(Google Maps Utility Library)中提供了MapLabel类以方便用户在地图上绘制文本。
MapLabel是对Overlay View类的扩展。而Overlay View是Google Maps API V3的一个基类,它只为用户提供在创建叠加层时必须实现的若干方法,在用户的自定义叠加层中具体添加什么内容由用户自己决定。MapLabel是将绘有文本的HTML5Canvas元素加入叠加层,并放置在地图指定位置,从而形成对此处地图元素的标注。
但HTML5Canvas元素在文本绘制方面有很大的局限性,只能在水平方向自左向右绘制。所以,MapLabel可基本满足场点标注的需要。如果要文字倾斜、旋转,或沿道路、河流、各种管线等线状或带状地图元素标绘文字,MapLabel就无能为力了。
发明内容
本发明的目的在于克服上述现有技术缺陷,提供一种基于SVG的Google用户地图文本标注方法,解决文本标注问题,为Google用户地图文本标注找到一条新的途径。其具体技术方案为:
一种基于SVG的Google用户地图文本标注方法,包括以下步骤:
首先将含有路径本本的svg元素作为javaScript对象加入自定义叠加层的地图窗格中;然后在绘制此叠加层的过程中执行以下步骤:
(1)调用Overlay View类的getProjection()方法获取当前地图投影;
(2)将经纬度表示的标注路径转换为当前投影下的像素路径;
(3)计算像素路径长度,并与标注文本长度比较,如果太短,则不显示svg对象;
(4)确定标注文本在像素路径的起点位置,以使文本居于路径中部;
(5)按文本长度确定标注文本实际占据的像素路径;
(6)比较确定标注文本像素路径的最小坐标值,并将其作为svg对象的左上角坐标;
(7)将步骤(5)得到的标注文本像素路径转换为相对svg左上角的像素路径;
(8)将步骤(7)得到的坐标串表示的文本像素路径转换为svg中文本路径path元素的路径表示形式,并替换其d属性。
进一步优选,每个待标注地图元素均需建立一个或多个文本标注对象,并利用数组进行管理,以适应地图元素长度的不同和变化。
除了按文本长度控制标注的显示,还可以通过地图缩放级别控制标注的显示。
当标注对象注销时,Google Maps API调用onRemove()方法从地图上移除svg对象。利用对象方法setMap(null)和setMap(map)可从地图上隐去或复显文本标注。
与现有技术相比,本发明的有益效果为:本发明将HTML5SVG与Google Maps API V3的Overlay View类结合,建立一个JavaScript类SVGMapLabel,用于在Google地图生成文本标注。SVGMapLabel可以为Google地图上的点、线、区域对象建立文本标注,可用于交互式标注,也可与KML图层结合,对KML图层中的地图要素进行自动标注,其标注效果类似于Google基础地图,完全可以取代MapLabel。在建立基于Google地图的WebGIS时,SVGMapLabel类可用于用户地图的内文本标注。
附图说明
图1是在独立Web页面上用svg沿路径绘制文本;
图2是道路中线KML文档结构;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杨立法,未经杨立法许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410191069.7/2.html,转载请声明来源钻瓜专利网。
- 上一篇:具有碳纤维音孔盖合结构的萨克斯风
- 下一篇:校用报纸宣传栏





