亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? omrangerings.java

?? openmap java寫的開源數字地圖程序. 用applet實現,可以像google map 那樣放大縮小地圖.
?? JAVA
字號:
// **********************************************************************// // <copyright>// //  BBN Technologies//  10 Moulton Street//  Cambridge, MA 02138//  (617) 873-8000// //  Copyright (C) BBNT Solutions LLC. All rights reserved.// // </copyright>// **********************************************************************// // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/omGraphics/OMRangeRings.java,v $// $RCSfile: OMRangeRings.java,v $// $Revision: 1.3.2.3 $// $Date: 2005/12/22 23:14:24 $// $Author: dietrick $// // **********************************************************************package com.bbn.openmap.omGraphics;import java.awt.Graphics;import java.io.Serializable;import com.bbn.openmap.LatLonPoint;import com.bbn.openmap.proj.Length;import com.bbn.openmap.proj.Projection;/** * An object that manages a series of range circles. It is really an OMCircle * that manages a set of inner circles and an OMPOint. The location of these * inner circles depend on two new variables, the interval and intervalUnits. If * the intervalUnits are null, then the interval represents the number of inner * circles, not including the outer ring and the innermost point, that are * spaced evenly between them. If the intervalUnits are not null, then the * interval represents the number of intervalUnits where inner circles are * placed. For example, if the intervalUnits is Length.MILE, and the interval is * 5, then inner circles will be placed every 5 miles. If the intervalUnits is * null, then there will be 5 inner circles drawn between the center point and * the outer ring. *  * @see OMCircle */public class OMRangeRings extends OMCircle implements Serializable {    /** The inner ring of circles. */    protected transient OMCircle[] subCircles = null;    /** The labels for the circles. */    protected transient OMText[] labels = null;    /** By default, there are 3 inner rings, 4 total. */    public final static int DEFAULT_INTERVAL = 4;    /**     * The number of rings, or the unit interval, depending on whether     * intervalUnits is null or not.     */    protected int interval = DEFAULT_INTERVAL;    /** The unit object specifying the interval meaning. */    protected Length intervalUnits = null;    /**     * The DrawingAttributes object used to reflect the outer circle properties     * to the inner circles.     */    protected DrawingAttributes drawingAttributes = new DrawingAttributes();    /** The center point of the range rings. */    protected OMPoint centerPoint;    /** The default format. */    public final static java.text.DecimalFormat DEFAULT_FORMAT = new java.text.DecimalFormat();    /** Formatting for the labels with units. */    protected java.text.NumberFormat form = DEFAULT_FORMAT;    protected boolean drawLabels = true;    /**     * Creates an OMRangeRings with a Lat-lon center and a lat-lon axis.     * Rendertype is RENDERTYPE_LATLON.     *      * @param latPoint latitude of center point, decimal degrees     * @param lonPoint longitude of center point, decimal degrees     * @param radius distance in decimal degrees (converted to radians     *        internally).     */    public OMRangeRings(float latPoint, float lonPoint, float radius) {        this(new LatLonPoint(latPoint, lonPoint),             radius,             Length.DECIMAL_DEGREE,             -1);    }    /**     * Create an OMRangeRings with a lat/lon center and a physical distance     * radius. Rendertype is RENDERTYPE_LATLON.     *      * @param latPoint latitude of center of circle in decimal degrees     * @param lonPoint longitude of center of circle in decimal degrees     * @param radius distance     * @param units com.bbn.openmap.proj.Length object.     */    public OMRangeRings(float latPoint, float lonPoint, float radius,            Length units) {        this(new LatLonPoint(latPoint, lonPoint), radius, units, -1);    }    /**     * Create an OMRangeRings with a lat/lon center and a physical distance     * radius. Rendertype is RENDERTYPE_LATLON.     *      * @param latPoint latitude of center of circle in decimal degrees     * @param lonPoint longitude of center of circle in decimal degrees     * @param radius distance     * @param units com.bbn.openmap.proj.Length object specifying units.     * @param nverts number of vertices for the poly-circle (if &lt; 3, value is     *        generated internally)     */    public OMRangeRings(float latPoint, float lonPoint, float radius,            Length units, int nverts) {        this(new LatLonPoint(latPoint, lonPoint), radius, units, nverts);    }    /**     * Create an OMRangeRings with a lat/lon center and a physical distance     * radius. Rendertype is RENDERTYPE_LATLON.     *      * @param center LatLon center of circle     * @param radius distance     * @param units com.bbn.openmap.proj.Length object specifying units for     *        distance.     * @param nverts number of vertices for the poly-circle(if &lt; 3, value is     *        generated internally)     */    public OMRangeRings(LatLonPoint center, float radius, Length units,            int nverts) {        super(center, radius, units, nverts);        centerPoint = createCenterPoint();        form.setMaximumFractionDigits(2);    }    protected OMPoint createCenterPoint() {        return new OMPoint((float) center.getLatitude(), (float) center.getLongitude());    }    /**     * Set the interval. If the interval units are null, then this interval     * represents the number of circles within the external, defined circle. If     * the interval units are not null, then this interval represents the unit     * intervals where range rings are placed.     */    public void setInterval(int interval) {        this.interval = interval;        setNeedToRegenerate(true);    }    /** Convenience method to set both at one time. */    public void setInterval(int interval, Length units) {        setInterval(interval);        setIntervalUnits(units);    }    /**     * Get the interval number.     */    public int getInterval() {        return interval;    }    /**     * Set the interval units. If this is null, then the interval value will     * represent the number of rings drawn within the defined outer ring. If     * this is not null, then it represents the units of the interval where the     * range rings are drawn.     */    public void setIntervalUnits(Length units) {        intervalUnits = units;        setNeedToRegenerate(true);    }    /**     * Get the interval units.     */    public Length getIntervalUnits() {        return intervalUnits;    }    /**     * Flag for whether the rings should be labeled.     */    public void setDrawLabels(boolean dl) {        drawLabels = dl;    }    public boolean getDrawLabels() {        return drawLabels;    }    /**     * Set the format for the number labels. If null, the defaule will be used.     * This only applies to the labels with units.     */    public void setFormat(java.text.NumberFormat nf) {        if (nf != null) {            form = nf;        } else {            form = DEFAULT_FORMAT;        }    }    /**     * Get the format used for the labeling of unit rings.     */    public java.text.NumberFormat getFormat() {        return form;    }    /**     * Set the radius. This is meaningful only if the render type is     * RENDERTYPE_LATLON. Note that while the radius is specified as decimal     * degrees, it only means the distance along the ground that that number of     * degrees represents at the equator, *NOT* a radius of a number of degrees     * around a certain location. There is a difference.     *      * @param radius float radius in decimal degrees     */    public void setRadius(float radius) {        setRadius(radius, Length.DECIMAL_DEGREE);    }    /**     * Set the radius with units. This is meaningful only if the render type is     * RENDERTYPE_LATLON.     *      * @param radius float radius     * @param units Length specifying unit type.     */    public void setRadius(float radius, Length units) {        this.radius = units.toRadians(radius);        setNeedToRegenerate(true);    }    /**     * Take the interval and intervalUnits, and then create the proper inner     * circles.     */    public OMCircle[] createCircles() {        OMCircle[] circles;        OMText[] t;        int i;        float rad;        String value;        if (intervalUnits == null) {            int noUnitInterval = interval - 1;            circles = new OMCircle[noUnitInterval];            t = new OMText[noUnitInterval];            for (i = 0; i < noUnitInterval; i++) {                rad = (float) ((i + 1) * radius / (noUnitInterval + 1));                circles[i] = new OMCircle(center, rad, Length.RADIAN, -1);                value = ((i + 1) + "/" + (noUnitInterval + 1));                t[i] = new OMText(center.getLatitude()                        + Length.DECIMAL_DEGREE.fromRadians(rad), center.getLongitude(), value, OMText.JUSTIFY_CENTER);            }        } else {            float realDistanceInterval = intervalUnits.toRadians(interval);            int number = (int) (radius / realDistanceInterval);            circles = new OMCircle[number];            t = new OMText[number + 1];            for (i = 0; i < number; i++) {                rad = (float) ((i + 1) * realDistanceInterval);                circles[i] = new OMCircle(center, rad, Length.RADIAN, -1);                value = (form.format((double) intervalUnits.fromRadians(rad))                        + " " + intervalUnits.getAbbr());                t[i] = new OMText(center.getLatitude()                        + Length.DECIMAL_DEGREE.fromRadians(rad), center.getLongitude(), value, OMText.JUSTIFY_CENTER);            }            value = (form.format((double) intervalUnits.fromRadians(radius))                    + " " + intervalUnits.getAbbr());            t[i] = new OMText(center.getLatitude()                    + Length.DECIMAL_DEGREE.fromRadians(radius), center.getLongitude(), value, OMText.JUSTIFY_CENTER);        }        labels = t;        return circles;    }    /**     * Prepare the circles for rendering.     *      * @param proj Projection     * @return true if generate was successful     */    public boolean generate(Projection proj) {        if (getNeedToRegenerate() == true) {            if (interval > 0) {                subCircles = createCircles();            } else {                subCircles = null;            }        }        centerPoint = createCenterPoint();        centerPoint.generate(proj);        setRenderType(RENDERTYPE_LATLON); // Can't be anything else.        int i;        if (subCircles != null) {            for (i = 0; i < subCircles.length; i++) {                subCircles[i].generate(proj);                labels[i].generate(proj);            }            // do the one for the outer ring if there are units.            if (labels.length > i) {                labels[i].generate(proj);            }        }        return super.generate(proj);    }    /**     * Paint the circles.     *      * @param g Graphics context to render into     */    public void render(Graphics g) {        super.render(g);        drawingAttributes.setFrom(this);        if (subCircles != null) {            // Draw from the larger to the smaller, so the lines of            // the smaller circles will appear on top of the bigger            // ones.            for (int i = subCircles.length - 1; i >= 0; i--) {                drawingAttributes.setTo(subCircles[i]);                drawingAttributes.setTo(labels[i]);                labels[i].setLinePaint(drawingAttributes.getLinePaint());                subCircles[i].render(g);                if (drawLabels) {                    labels[i].render(g);                }            }            // do the one for the outer ring if there are units.            if (labels.length > subCircles.length && drawLabels) {                drawingAttributes.setTo(labels[subCircles.length]);                labels[subCircles.length].setLinePaint(drawingAttributes.getLinePaint());                labels[subCircles.length].render(g);            }        }        if (centerPoint != null) {            drawingAttributes.setTo(centerPoint);            centerPoint.render(g);        }    }    /**     * Return the shortest distance from the circle to an XY-point.     *      * @param x X coordinate of the point.     * @param y Y coordinate fo the point.     * @return float distance from circle to the point     */    public float distance(int x, int y) {        float dist = normalizeDistanceForLineWidth(super.distance(x, y));        // Not sure whether the inner circles should be queried for        // distance measurements.        float tmpDist;        // if (dist != 0 && subCircles != null) {        // for (int i = 0; i < subCircles.length; i++) {        // tmpDist = subCircles[i].distance(x, y);        // if (tmpDist == 0) return tmpDist;        // if (tmpDist < dist) {        // dist = tmpDist;        // }        // }        // }        tmpDist = centerPoint.distance(x, y);        if (tmpDist < dist) {            dist = tmpDist;        }        return dist;    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品国产免费| 欧美mv日韩mv| 性久久久久久久| 欧美区在线观看| 日韩av高清在线观看| 精品国产三级电影在线观看| 久久爱www久久做| 久久久久久99久久久精品网站| 午夜一区二区三区在线观看| 精品欧美一区二区在线观看| 91视视频在线观看入口直接观看www | 蜜桃久久av一区| 国产精品网友自拍| 欧美色欧美亚洲另类二区| 免费人成精品欧美精品| 成人欧美一区二区三区小说 | 中文字幕精品—区二区四季| 色婷婷av一区二区三区之一色屋| 亚洲不卡在线观看| 精品国产乱码久久久久久影片| 国产裸体歌舞团一区二区| 一区二区三区在线视频观看58| 欧美一区二区三区爱爱| 欧美少妇bbb| 91久久香蕉国产日韩欧美9色| 国产乱码字幕精品高清av| 午夜av一区二区| 亚洲国产欧美日韩另类综合| 亚洲欧洲av在线| 综合色天天鬼久久鬼色| 国产日产精品1区| 久久久影院官网| 精品国产亚洲一区二区三区在线观看| 欧洲国产伦久久久久久久| 一本到高清视频免费精品| 狠狠色综合日日| 国产成人综合亚洲网站| 国产美女一区二区三区| 亚洲第一二三四区| 丝袜美腿高跟呻吟高潮一区| 日韩中文字幕1| 麻豆一区二区三| 成人午夜电影久久影院| av激情综合网| 91精品在线免费观看| 久久久久久久网| 一个色妞综合视频在线观看| 性久久久久久久久久久久| 久99久精品视频免费观看| 国产精品18久久久久| 色婷婷综合久久久中文字幕| 91麻豆精品国产91久久久久久久久 | 国产精华液一区二区三区| av在线播放一区二区三区| 欧美日韩一二区| 中日韩免费视频中文字幕| 一区二区三区四区中文字幕| 精品系列免费在线观看| jizzjizzjizz欧美| 久久久久9999亚洲精品| 亚洲成a人片在线观看中文| 国产一区二区三区久久久| 欧美色综合网站| 亚洲男同性恋视频| 国产一区二区91| 26uuu欧美日本| 韩国在线一区二区| 欧美一级精品大片| 亚洲一区二区三区爽爽爽爽爽| 国产一区二区三区av电影| 欧洲av在线精品| 亚洲国产成人av| 欧美日韩久久一区| 日韩福利视频网| 欧美日韩视频在线观看一区二区三区| 中文字幕日韩一区| 91在线视频在线| 亚洲精品国产高清久久伦理二区| 成人午夜激情在线| 亚洲精品国产第一综合99久久| 色综合一区二区三区| 亚洲自拍偷拍av| 在线精品视频一区二区三四| 亚洲国产裸拍裸体视频在线观看乱了| 在线一区二区三区四区五区| 五月婷婷激情综合| 日韩精品一区二区三区四区| 久久国产视频网| 国产精品毛片久久久久久| 91美女福利视频| 性做久久久久久免费观看欧美| 91国内精品野花午夜精品| 亚洲国产日产av| 国产欧美视频在线观看| 色天使色偷偷av一区二区| 美女国产一区二区三区| 亚洲欧洲日产国码二区| 91精品啪在线观看国产60岁| 国产黑丝在线一区二区三区| 亚洲品质自拍视频网站| 欧美精品一区二区高清在线观看| 成人综合婷婷国产精品久久免费| 亚洲午夜视频在线观看| 国产午夜精品一区二区三区四区| 欧美日韩免费在线视频| av资源站一区| 国产·精品毛片| 国产伦精品一区二区三区在线观看| 一区二区三区美女视频| 日本一区二区免费在线| 欧美日韩综合在线免费观看| 91影视在线播放| 国产美女娇喘av呻吟久久| 一区二区三区在线观看动漫 | 欧美精品 国产精品| 不卡av免费在线观看| 国产自产v一区二区三区c| 国产精品一区三区| 国产黄色成人av| 91一区二区三区在线观看| 99re这里只有精品首页| 色综合久久九月婷婷色综合| 94-欧美-setu| 91精品中文字幕一区二区三区| 欧美色涩在线第一页| 91精彩视频在线| 欧美一级理论片| 国产精品色在线观看| 亚洲女与黑人做爰| 午夜精品成人在线视频| 看电影不卡的网站| 成人av综合一区| 欧美日韩一级片在线观看| 精品国产乱码久久久久久蜜臀| 欧美日韩中文国产| 91精品国产91久久综合桃花| www精品美女久久久tv| 亚洲区小说区图片区qvod| 男女性色大片免费观看一区二区| 国产成人欧美日韩在线电影| 色婷婷av一区二区三区gif | 色综合久久88色综合天天免费| 欧美美女一区二区| 18欧美亚洲精品| 国产伦精品一区二区三区在线观看| 91精品1区2区| 亚洲人成网站影音先锋播放| 国产在线不卡视频| 欧美一区二区福利在线| 一区二区三区加勒比av| 久久激情五月激情| 日韩免费性生活视频播放| 亚洲男同1069视频| 99久久综合精品| 欧美国产综合色视频| 国产精品18久久久久久久网站| 欧美日韩黄色一区二区| 国产精品女主播在线观看| 国产在线精品一区二区不卡了| 欧美日韩一区高清| 首页国产欧美日韩丝袜| 欧美日韩一区 二区 三区 久久精品| 一区二区欧美精品| 欧美喷潮久久久xxxxx| 日本美女一区二区| 精品少妇一区二区三区视频免付费| 蜜臀av一区二区| 国产精品久久精品日日| 91蜜桃在线免费视频| 亚洲午夜久久久久久久久电影网 | 亚洲情趣在线观看| 欧美视频你懂的| 国产剧情av麻豆香蕉精品| 久久久影院官网| 九九视频精品免费| 亚洲天天做日日做天天谢日日欢 | 日韩av二区在线播放| 2020国产精品自拍| 不卡电影免费在线播放一区| 一个色在线综合| 国产三级久久久| 欧美一级欧美三级在线观看| 精东粉嫩av免费一区二区三区| 国产精品毛片久久久久久| 欧美丰满少妇xxxxx高潮对白| 国产高清不卡二三区| 亚洲国产视频一区| 国产精品久久久久久久蜜臀 | 日本成人在线看| 亚洲男人天堂av网| 国产精品久久久久影院色老大| 欧美无砖砖区免费| 在线视频国内自拍亚洲视频| 韩日精品视频一区| 国产一区二区女| 精品亚洲成a人| 久久精品国产一区二区三| 午夜精品123| 蜜桃视频一区二区三区在线观看| 男人的天堂亚洲一区|