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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? roadfinder.java

?? openmap java寫的開源數(shù)字地圖程序. 用applet實(shí)現(xiàn),可以像google map 那樣放大縮小地圖.
?? JAVA
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
/* ********************************************************************** * *    Use, duplication, or disclosure by the Government is subject to * 	     restricted rights as set forth in the DFARS. * * 			   BBN Technologies * 			    A Division of * 			   BBN Corporation * 			  10 Moulton Street * 			 Cambridge, MA 02138 * 			    (617) 873-3000 * * 	  Copyright 1998 by BBN Technologies, A Division of * 		BBN Corporation, all rights reserved. * * ********************************************************************** * * $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/tools/roads/RoadFinder.java,v $ * $RCSfile: RoadFinder.java,v $ * $Revision: 1.1.2.5 $ * $Date: 2005/08/12 21:47:05 $ * $Author: dietrick $ * * ********************************************************************** */package com.bbn.openmap.tools.roads;import java.awt.BasicStroke;import java.awt.Color;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.Point;import java.awt.Shape;import java.awt.geom.AffineTransform;import java.awt.geom.PathIterator;import java.io.PrintStream;import java.util.ArrayList;import java.util.Enumeration;import java.util.HashMap;import java.util.HashSet;import java.util.Hashtable;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.Set;import java.util.Vector;import java.util.logging.Level;import java.util.logging.Logger;import com.bbn.openmap.LatLonPoint;import com.bbn.openmap.event.ProjectionEvent;import com.bbn.openmap.event.ProjectionListener;import com.bbn.openmap.omGraphics.OMGeometry;import com.bbn.openmap.omGraphics.OMLine;import com.bbn.openmap.omGraphics.OMPoint;import com.bbn.openmap.omGraphics.OMText;import com.bbn.openmap.proj.Projection;import com.bbn.openmap.util.quadtree.QuadTree;/** * Gives road access to a shape or vpf layer. */public class RoadFinder implements RoadServices, ProjectionListener, RoadLayer {    protected RoadClasses roadClasses = new RoadClasses();    protected RoadClass defaultRoadClass;    protected LayerView layer;    protected Intersections intersections = new Intersections();    protected RoadVector roads = new RoadVector();    protected Vector removedRoads = new Vector();    /**     * how far (in lat-lon space) from lat,lon point to look in quad     * tree for nearest road *     */    protected float halo;    Logger logger = Logger.getLogger(this.getClass().getName());    boolean drawIntersections = false;    boolean drawResults = false;    boolean doLoopCheck = false;    protected QuadTree interQuadTree;    protected Map graphicToRoad;    boolean doInterp = true;    /** list of extra graphics to display */    List toDraw = new ArrayList();    boolean showLines = true;    int roadsMade = 0;    public RoadFinder(LayerView layer, boolean drawIntersections,            boolean drawResults) {        initRoadClasses();        this.drawIntersections = drawIntersections;        this.drawResults = drawResults;        logger.info("drawIntersections is " + drawIntersections);        logger.info("drawResults is " + drawResults);        this.layer = layer;    }    protected void initRoadClasses() {        roadClasses.put(new RoadClass("1", Color.magenta, 2, 25.0f));        defaultRoadClass = findRoadClass("1");    }    /**     * Implemented for ProtectionListener     */    public void projectionChanged(ProjectionEvent e) {        try {            getData();        } catch (Exception ee) {            logger.warning("Got exception " + ee);            ee.printStackTrace();        }    }    /**     * Take the shape data on the layer and use it to populate our     * roads and intersections.     *      * Clears lists of roads and intersections first, and after     * calculating the roads, tells the RoadLayer what extra graphics     * to display, if any.     */    protected synchronized void getData() throws Exception {        logger.info("get Data called.");        intersections.clear();        removedRoads.setSize(0);        roads.clear();        toDraw.clear();        getRoads();        checkIntegrity();        logger.info("showing " + toDraw.size() + " extra graphics.");        layer.setExtraGraphics(toDraw);        halo = 0.05f * (getProjection().getScale() / 20000f);    }    /**     * Take the shape data on the layer and use it to populate our     * roads and intersections.     *      */    protected void getRoads() throws Exception {        roadsMade = 0;        List rectangle = layer.getGraphicList();        int[] xPoints = new int[1024];        int[] yPoints = new int[1024];        interQuadTree = new QuadTree();        graphicToRoad = new HashMap();        int height = getProjection().getHeight();        int width = getProjection().getWidth();        int skipped = 0;        synchronized (rectangle) {            double[] points = new double[6];            if (logger.isLoggable(Level.INFO))                logger.info("iterating over rectangle contents.");            int num = 0;            int made = 0;            for (Iterator iter = rectangle.iterator(); iter.hasNext();) {                double lastXOff = 0;                double lastYOff = 0;                num++;                OMGeometry graphic = (OMGeometry) iter.next();                if (logger.isLoggable(Level.FINE))                    logger.fine("examining " + graphic);                Shape shape = graphic.getShape();                if (shape == null)                    continue;                PathIterator path = shape.getPathIterator(new AffineTransform());                int segment = 0;                int itemsInPath = 0;                boolean pathValid = true;                for (; !path.isDone() && pathValid; path.next()) {                    int type = path.currentSegment(points);                    itemsInPath++;                    boolean offScreen = false;                    if (points[0] < 0 || points[0] >= width) {                        // logger.warning("skipping x point " +                        // points[0] + " b/c it's off the map.");                        offScreen = true;                    }                    if (points[1] < 0 || points[1] >= height) {                        // logger.warning("skipping y point " +                        // points[1] + " b/c it's off the map.");                        offScreen = true;                    }                    switch (type) {                    case PathIterator.SEG_CLOSE:                        logger.warning("got close");                        break;                    case PathIterator.SEG_CUBICTO:                        logger.warning("got cubic to");                        break;                    case PathIterator.SEG_LINETO:                        if (offScreen) {                            if (segment > 0) {                                // BOZO                                // should reexamine whether this is                                // legal - there should be                                // a one-to-one mapping between                                // graphic and road object,                                // but this will throw away the                                // original entry                                if (doInterp) {                                    Point interpPt = interp(xPoints[segment - 1],                                            yPoints[segment - 1],                                            points[0],                                            points[1],                                            width,                                            height);                                    xPoints[segment] = interpPt.x;                                    yPoints[segment++] = interpPt.y;                                    makeRoad(shape,                                            graphic,                                            made++,                                            xPoints,                                            yPoints,                                            segment);                                    lastXOff = 0;                                    lastYOff = 0;                                    segment = 0;                                }                            } else {                                lastXOff = points[0];                                lastYOff = points[1];                            }                        } else { // onscreen                            if (lastXOff != 0 || lastYOff != 0) {                                Point interpPt = interp(points[0],                                        points[1],                                        lastXOff,                                        lastYOff,                                        width,                                        height);                                xPoints[segment] = interpPt.x;                                yPoints[segment++] = interpPt.y;                            }                            xPoints[segment] = (int) points[0];                            yPoints[segment++] = (int) points[1];                            lastXOff = 0;                            lastYOff = 0;                        }                        if (logger.isLoggable(Level.FINE))                            logger.fine(" line to " + points[0] + ", "                                    + points[1]);                        break;                    case PathIterator.SEG_MOVETO:                        if (offScreen) {                            lastXOff = points[0];                            lastYOff = points[1];                        } else {                            if (segment == 0) {                                xPoints[segment] = (int) points[0];                                yPoints[segment++] = (int) points[1];                            } else {                                // we got a second move to in the list                                // - this is not valid                                pathValid = false;                                logger.info("got invalid path.");                            }                            lastXOff = 0;                            lastYOff = 0;                        }                        if (logger.isLoggable(Level.FINE))                            logger.fine(" moving to " + points[0] + ", "                                    + points[1]);                        break;                    case PathIterator.SEG_QUADTO:                        logger.warning("got quad to");                        break;                    default:                        logger.warning("got another type : " + type);                        break;                    }                }                if (segment < 2) {                    skipped++;                    logger.fine("Skipping line that doesn't have an end point");                } else {                    if (logger.isLoggable(Level.INFO))                        logger.info("items in path " + itemsInPath);                    makeRoad(shape, graphic, made++, xPoints, yPoints, segment);                }                segment = 0;            }            if (logger.isLoggable(Level.INFO))                logger.info("num items " + num + " skipped " + skipped);        }    }    /**     * find a point between x1,y1 and x2, y2 that is within the     * visible map     *      * @param width of visible map     * @param height of visible map     * @return Point between x1,y1 and x2, y2     */    protected Point interp(double x1, double y1, double x2, double y2,                           int width, int height) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
26uuu成人网一区二区三区| 欧美精品一区二区三区高清aⅴ| 亚洲国产综合人成综合网站| 精品国产露脸精彩对白| 一本一道综合狠狠老| 国产乱国产乱300精品| 亚洲一区二区免费视频| 国产午夜精品久久久久久久 | 国产福利一区二区三区| 天堂一区二区在线| ●精品国产综合乱码久久久久| 亚洲18女电影在线观看| 欧美激情一区二区三区蜜桃视频 | 69精品人人人人| 91色九色蝌蚪| 成人亚洲一区二区一| 六月丁香婷婷久久| 香蕉久久夜色精品国产使用方法| 国产精品久久久久久久久晋中| 日韩一级大片在线| 欧美午夜电影网| 色诱视频网站一区| 波多野结衣一区二区三区| 国产一区二区三区在线看麻豆| 午夜精品福利视频网站| 亚洲激情男女视频| 最新久久zyz资源站| 久久久久久久网| 精品人在线二区三区| 欧美一级二级三级乱码| 欧美日韩一区不卡| 欧美中文字幕不卡| 在线免费观看一区| 91麻豆swag| 91在线观看美女| 成人av动漫在线| 成人av网站免费观看| 不卡的av中国片| av电影一区二区| 成人免费毛片a| 成人黄色av电影| 91亚洲精品一区二区乱码| 99久久99久久综合| 91久久精品午夜一区二区| 一本到高清视频免费精品| 91在线观看污| 日本韩国欧美三级| 色欲综合视频天天天| 欧美日韩一区视频| 91精品国产黑色紧身裤美女| 欧美一区二区三区精品| 日韩美女视频一区二区在线观看| 日韩一区二区三区在线| 欧美mv和日韩mv的网站| 久久久亚洲综合| 欧美国产激情一区二区三区蜜月| 中文字幕一区日韩精品欧美| 亚洲蜜臀av乱码久久精品蜜桃| 一区二区免费在线| 日本v片在线高清不卡在线观看| 麻豆免费看一区二区三区| 国产成人一级电影| voyeur盗摄精品| 欧美在线999| 日韩视频永久免费| 国产精品欧美一区喷水| 亚洲品质自拍视频网站| 亚洲成a人在线观看| 久久精品99国产精品日本| 国产99精品视频| 在线观看视频一区二区欧美日韩| 欧美另类高清zo欧美| 久久欧美一区二区| 亚洲精品国产精华液| 美女一区二区视频| www.av亚洲| 7777精品伊人久久久大香线蕉超级流畅| 日韩欧美中文一区二区| 中文字幕不卡在线观看| 亚洲成av人片一区二区梦乃| 国内精品伊人久久久久av影院| caoporen国产精品视频| 欧美色男人天堂| 国产日产欧美精品一区二区三区| 一区二区三区高清| 激情综合色综合久久综合| 91在线免费视频观看| 欧美成人精品1314www| 日韩一区欧美一区| 美女网站在线免费欧美精品| 99re这里都是精品| 欧美成人三级电影在线| 亚洲乱码国产乱码精品精98午夜| 麻豆精品一区二区综合av| 91在线观看地址| 日韩欧美在线123| 尤物在线观看一区| 国产精品18久久久| 欧美一卡在线观看| 一区二区三区欧美日| 国产精品一区2区| 制服.丝袜.亚洲.另类.中文 | 麻豆久久久久久| 色94色欧美sute亚洲线路一久| 精品精品国产高清一毛片一天堂| 一区二区三区中文免费| 国产福利视频一区二区三区| 欧美一区二区人人喊爽| 伊人一区二区三区| 成人午夜精品一区二区三区| 日韩欧美不卡一区| 亚洲成精国产精品女| 色悠悠亚洲一区二区| 国产精品毛片久久久久久久| 激情五月激情综合网| 在线成人小视频| 午夜影院久久久| 欧美在线免费观看亚洲| 亚洲色图另类专区| 成人开心网精品视频| 久久久激情视频| 韩国av一区二区| 欧美成人性福生活免费看| 奇米精品一区二区三区在线观看| 欧美亚一区二区| 一二三区精品福利视频| 色综合久久中文综合久久牛| 国产精品第四页| 成人高清伦理免费影院在线观看| 国产亚洲精品7777| 国产毛片精品视频| 久久久美女毛片| 激情五月婷婷综合| 久久久国产精华| 国产精品中文字幕欧美| 久久久午夜电影| 国产高清成人在线| 国产精品丝袜91| av网站一区二区三区| 1024国产精品| 欧美午夜电影网| 日韩av一区二区三区四区| 91麻豆精品国产91久久久更新时间| 无吗不卡中文字幕| 欧美一区二区人人喊爽| 久久99国产精品久久99果冻传媒| 欧美大片在线观看一区二区| 国产一区二区三区在线观看免费| 久久久久久黄色| 99久久国产综合精品色伊| 亚洲黄色性网站| 欧美高清精品3d| 久久99久久久欧美国产| 久久久久久久久久电影| 不卡的av在线播放| 亚洲一区二区欧美| 日韩色视频在线观看| 国产精品影视在线观看| 综合久久久久综合| 欧美色图12p| 狂野欧美性猛交blacked| 国产亚洲欧美一级| 91一区二区三区在线播放| 亚洲成av人片一区二区| 2021国产精品久久精品| 99视频在线精品| 视频一区在线视频| 久久久久综合网| 色av成人天堂桃色av| 久久超碰97中文字幕| 中文字幕av一区二区三区免费看| 色哟哟精品一区| 麻豆91小视频| 中文字幕日韩一区二区| 欧美日韩视频在线第一区| 国内成+人亚洲+欧美+综合在线| 国产精品久久久久久妇女6080| 欧美系列在线观看| 国产一区二区三区| 尤物在线观看一区| 久久久久国产精品麻豆ai换脸| 色吊一区二区三区| 国产乱码精品一区二区三区av| 亚洲一区二区影院| 国产色产综合产在线视频| 欧美色综合影院| 懂色av噜噜一区二区三区av| 午夜精品国产更新| 国产精品国产三级国产aⅴ原创| 9191精品国产综合久久久久久| 懂色av中文字幕一区二区三区| 日本伊人色综合网| 亚洲天堂精品视频| 亚洲精品在线观看视频| 欧美综合天天夜夜久久| 成人自拍视频在线| 日本sm残虐另类| 悠悠色在线精品| 国产精品免费av| 精品国产污网站|