在GE的图层中有一个照片图层,在浏览时可以看到各地的一些图片,我们称之为热点信息,如下图所示:

再来看下本文的实现效果:
效果是不是很像呢,其实实现这个很简单,参照examples中的Balloons就可以很容易的实现,这里我自己封装了BalloonUtil类便于复用,代码很简单都加了注释就不再一一展开了,直接附上源代码,有看不明白的地方可以留言交流哈。
-
- package edu.whu.vge.util;
-
- import gov.nasa.worldwind.avlist.AVKey;
- import gov.nasa.worldwind.awt.WorldWindowGLCanvas;
- import gov.nasa.worldwind.geom.Position;
- import gov.nasa.worldwind.layers.RenderableLayer;
- import gov.nasa.worldwind.render.AbstractBrowserBalloon;
- import gov.nasa.worldwind.render.BalloonAttributes;
- import gov.nasa.worldwind.render.BasicBalloonAttributes;
- import gov.nasa.worldwind.render.GlobeBrowserBalloon;
- import gov.nasa.worldwind.render.PointPlacemark;
- import gov.nasa.worldwind.render.Size;
- import gov.nasa.worldwind.util.Logging;
- import gov.nasa.worldwind.util.WWIO;
- import gov.nasa.worldwindx.examples.util.BalloonController;
- import gov.nasa.worldwindx.examples.util.HotSpotController;
-
- import java.io.InputStream;
-
- public class BalloonsUtil
- {
-
- private double balloonLat;
- private double balloonLon;
- private String balloonContentPath;
- private String balloonName;
- protected HotSpotController hotSpotController;
- protected BalloonController balloonController;
-
-
-
- public BalloonsUtil(double balloonLat, double balloonLon,
- String balloonContentPath, String balloonName)
- {
- super();
- this.balloonLat = balloonLat;
- this.balloonLon = balloonLon;
- this.balloonContentPath = balloonContentPath;
- this.balloonName = balloonName;
- }
-
-
- public RenderableLayer makeBrowserBalloon(WorldWindowGLCanvas windowGLCanvas)
- {
-
- this.hotSpotController = new HotSpotController(windowGLCanvas);
- this.balloonController = new BalloonController(windowGLCanvas);
- RenderableLayer layer = new RenderableLayer();
- layer.setName(balloonName);
-
- String htmlString = null;
- InputStream contentStream = null;
- try
- {
-
- contentStream = WWIO.openFileOrResourceStream(balloonContentPath,
- null);
- htmlString = WWIO.readStreamToString(contentStream, null);
- }
- catch (Exception e)
- {
- e.printStackTrace();
- }
- finally
- {
- WWIO.closeStream(contentStream, balloonContentPath);
- }
-
- if (htmlString == null) htmlString = Logging.getMessage(
- "generic.ExceptionAttemptingToReadFile", balloonContentPath);
-
-
- Position balloonPosition = Position.fromDegrees(balloonLat, balloonLon);
- AbstractBrowserBalloon balloon = new GlobeBrowserBalloon(htmlString,
- balloonPosition);
-
-
- BalloonAttributes attrs = new BasicBalloonAttributes();
- attrs.setSize(new Size(Size.NATIVE_DIMENSION, 0d, null,
- Size.NATIVE_DIMENSION, 0d, null));
- balloon.setAttributes(attrs);
-
-
- PointPlacemark placemark = new PointPlacemark(balloonPosition);
- placemark.setLabelText(balloonName);
- placemark.setValue(AVKey.BALLOON, balloon);
-
- layer.addRenderable(balloon);
- layer.addRenderable(placemark);
- return layer;
- }
-
- public double getBalloonLat()
- {
- return balloonLat;
- }
-
- public void setBalloonLat(double balloonLat)
- {
- this.balloonLat = balloonLat;
- }
-
- public double getBalloonLon()
- {
- return balloonLon;
- }
-
- public void setBalloonLon(double balloonLon)
- {
- this.balloonLon = balloonLon;
- }
-
- public String getBalloonContentPath()
- {
- return balloonContentPath;
- }
-
- public void setBalloonContentPath(String balloonContentPath)
- {
- this.balloonContentPath = balloonContentPath;
- }
-
- public String getBalloonName()
- {
- return balloonName;
- }
-
- public void setBalloonName(String balloonName)
- {
- this.balloonName = balloonName;
- }
- }
调用的时候,只需键入以下代码即可:
- String htmlPath = System.getProperty("user.dir")
- + "\\src\\edu\\whu\\vge\\data\\whu.html";
- BalloonsUtil balloonsUtil = new BalloonsUtil(30.5271,
- 114.3604, htmlPath, "我在这里");
-
- wwPanel.getWorldWindowGLCanvas()
- .getModel()
- .getLayers()
- .add(balloonsUtil.makeBrowserBalloon(wwPanel
- .getWorldWindowGLCanvas()));
另外,附上whu.html网页的代码以供大家参考。
- <html>
- <head>
- <style type=‘text/css‘>
- html, body {
- margin: 0 0;
- width: 100%;
- height: 100%;
- overflow: hidden
- }
-
- a:link {
- color: #0000CD;
- text-decoration: underline
- }
-
- table {
- font-family: verdana, 黑体, sans-serif;
- font-size: 12px;
- color: #4169E1;
- border-width: 1px;
- border-color: #a9c6c9;
- border-collapse: collapse
- }
-
- th {
- background-color: #4169E1;
- color: #fff
- }
-
- tr {
- background-color: #d4e3e5
- }
-
- td {
- border-width: 1px;
- border-style: solid;
- border-color: #a9c6c9
- }
- </style>
- <title></title>
- </head>
- <body>
- <table border=‘0‘>
- <tr>
- <th align=‘center‘ colspan=‘2‘>武汉大学</th>
- </tr>
- <tr>
- <td rowspan=‘7‘><a href="http://www.whu.edu.cn/index.htm"> <img
- border=‘0‘ alt=‘‘ width=‘300px‘ height=‘225px‘
- src=‘http://news.whu.edu.cn/_mediafile/whu_news/2015/02/02/1eq0euop1q.jpg‘>
-
- </a></td>
- </tr>
-
- </table>
- </body>
- </html>
World Wind Java开发之十一——加载热点信息(仿Google Earth)(转)
原文:http://www.cnblogs.com/love540376/p/6774699.html