⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 markers.java

📁 world wind java sdk 源码
💻 JAVA
字号:
/*Copyright (C) 2001, 2008 United States Governmentas represented by the Administrator of theNational Aeronautics and Space Administration.All Rights Reserved.*/package gov.nasa.worldwind.examples;import gov.nasa.worldwind.geom.Position;import gov.nasa.worldwind.geom.Angle;import gov.nasa.worldwind.layers.MarkerLayer;import gov.nasa.worldwind.render.markers.*;import gov.nasa.worldwind.render.Material;import gov.nasa.worldwind.event.SelectListener;import gov.nasa.worldwind.event.SelectEvent;import java.util.ArrayList;/** * @author tag * @version $Id: Markers.java 7671 2008-11-17 00:18:14Z tgaskins $ */public class Markers extends ApplicationTemplate{    private static class AppFrame extends ApplicationTemplate.AppFrame    {        private static final MarkerAttributes[] attrs = new BasicMarkerAttributes[]            {                new BasicMarkerAttributes(Material.BLACK, BasicMarkerShape.SPHERE, 1d, 10, 5),                new BasicMarkerAttributes(Material.DARK_GRAY, BasicMarkerShape.CONE, 1d, 10, 5),                new BasicMarkerAttributes(Material.LIGHT_GRAY, BasicMarkerShape.CYLINDER, 1d, 10, 5),                new BasicMarkerAttributes(Material.GRAY, BasicMarkerShape.HEADING_ARROW, 1d, 10, 5),                new BasicMarkerAttributes(Material.WHITE, BasicMarkerShape.HEADING_LINE, 1d, 10, 5),                new BasicMarkerAttributes(Material.RED, BasicMarkerShape.ORIENTED_CONE_LINE, 0.7),                new BasicMarkerAttributes(Material.YELLOW, BasicMarkerShape.ORIENTED_CYLINDER_LINE, 0.9),                new BasicMarkerAttributes(Material.CYAN, BasicMarkerShape.ORIENTED_SPHERE_LINE, 0.7),                new BasicMarkerAttributes(Material.GREEN, BasicMarkerShape.ORIENTED_CONE, 1d),                new BasicMarkerAttributes(Material.PINK, BasicMarkerShape.ORIENTED_SPHERE, 0.8),                new BasicMarkerAttributes(Material.BLUE, BasicMarkerShape.ORIENTED_CYLINDER, 0.6),            };        static        {            for (MarkerAttributes attr : attrs)            {                String shapeType = attr.getShapeType();                //noinspection StringEquality                if (shapeType == BasicMarkerShape.ORIENTED_SPHERE)                    attr.setHeadingMaterial(Material.YELLOW);                //noinspection StringEquality                if (shapeType == BasicMarkerShape.ORIENTED_CONE)                    attr.setHeadingMaterial(Material.PINK);            }        }        private Marker lastHighlit;        private BasicMarkerAttributes lastAttrs;        public AppFrame()        {            super(true, true, false);            double minLat = 20, maxLat = 60, latDelta = 2;            double minLon = -140, maxLon = -60, lonDelta = 2;            ArrayList<Marker> markers = new ArrayList<Marker>();            for (double lat = minLat; lat <= maxLat; lat += latDelta)            {                for (double lon = minLon; lon <= maxLon; lon += lonDelta)                {                    Marker marker = new BasicMarker(Position.fromDegrees(lat, lon, 0),                        attrs[(int) (Math.abs(lat) + Math.abs(lon)) % attrs.length]);                    marker.setPosition(Position.fromDegrees(lat, lon, 0));                    marker.setHeading(Angle.fromDegrees(lat * 5));                    markers.add(marker);                }            }            final MarkerLayer layer = new MarkerLayer();            layer.setOverrideMarkerElevation(true);            layer.setKeepSeparated(false);            layer.setElevation(1000d);            layer.setMarkers(markers);            insertBeforePlacenames(this.getWwd(), layer);            this.getLayerPanel().update(this.getWwd());            this.getWwd().addSelectListener(new SelectListener()            {                public void selected(SelectEvent event)                {                    if (lastHighlit != null                        && (event.getTopObject() == null || !event.getTopObject().equals(lastHighlit)))                    {                        lastHighlit.setAttributes(lastAttrs);                        lastHighlit = null;                    }                    if (!event.getEventAction().equals(SelectEvent.ROLLOVER))                        return;                    if (event.getTopObject() == null || event.getTopPickedObject().getParentLayer() == null)                        return;                    if (event.getTopPickedObject().getParentLayer() != layer)                        return;                    if (lastHighlit == null && event.getTopObject() instanceof Marker)                    {                        lastHighlit = (Marker) event.getTopObject();                        lastAttrs = (BasicMarkerAttributes) lastHighlit.getAttributes();                        MarkerAttributes highliteAttrs = new BasicMarkerAttributes(lastAttrs);                        highliteAttrs.setMaterial(Material.WHITE);                        highliteAttrs.setOpacity(1d);                        highliteAttrs.setMarkerPixels(lastAttrs.getMarkerPixels() * 1.4);                        highliteAttrs.setMinMarkerSize(lastAttrs.getMinMarkerSize() * 1.4);                        lastHighlit.setAttributes(highliteAttrs);                    }                }            });        }    }    public static void main(String[] args)    {        ApplicationTemplate.start("World Wind Markers", AppFrame.class);    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -