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

📄 remoteobjectlayer.java

📁 geotools的源码
💻 JAVA
字号:
package uk.ac.leeds.ccg.geotools;

import uk.ac.leeds.ccg.geotools.*;

import java.awt.*;
import java.net.*;
import java.io.*;

public class RemoteObjectLayer extends uk.ac.leeds.ccg.geotools.SimpleLayer implements Runnable
{
	private final static boolean DEBUG=true;    
    GeoCircle car = new GeoCircle(1, 214905+((344383-214905)/2),636767+((713865-636767)/2), 20);
    Thread thread;
    boolean running = false;
    int interval = 5000;
    
    URL url;
    URLConnection uc;
    BufferedReader br;
    
    public RemoteObjectLayer(URL url){
        this.url = url;
    }
    
    private void refresh(){
        try{
            uc = url.openConnection();
            uc.setDoInput(true);
            br = new BufferedReader(new InputStreamReader(uc.getInputStream()));
            String line = br.readLine();
            if(DEBUG)System.out.println(line);
            int sep = line.indexOf(',');
            double x = new Double(line.substring(0,sep)).doubleValue();
            double y = new Double(line.substring(sep+1,line.length())).doubleValue();
            GeoPoint p1 = new GeoPoint(x,y);
            if(!p1.equals(car.getCentroid())){
                if(DEBUG)System.out.println("Position changed");
                car.setCentre(p1);
                notifyLayerChangedListeners(LayerChangedEvent.ANIMATION);
            }
            p1=null;
        }
        catch(IOException e){
            System.err.println("Remote GeoData exception @"+url+" "+e);
        }
        
    }
    public void paintScaled(GeoGraphics g){
        paintScaled(g.getGraphics(),g.getScale(),g.getShade(),g.getData(),g.getStyle());
    }
    
    public void paintScaled(Graphics g,Scaler scale, Shader shade,GeoData data,ShadeStyle style){
        if(DEBUG)System.out.println("painting "+car);
        GeoCircle temp = car;
        int r=20;
		int p[];
			p = scale.toGraphics(temp.getX(),temp.getY());
			
			//Add thematic colour here
			double value = data.getValue(temp.getID());
			g.setColor(shade.getColor(value));
			if(style.isFilled()){
			  g.fillOval(p[0]-r,p[1]-r,2*r+1,2*r+1);
			}
			if(style.isOutlined()){
			    if(!style.isLineColorFromShader()){
			        g.setColor(style.getLineColor());
			    }
			    g.drawOval(p[0]-r,p[1]-r,2*r,2*r);
			}
			
	}
    
    
    
    public GeoRectangle getBounds()
    {
        // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
        // to do: code goes here
        return null;
    }

    public GeoRectangle getBoundsOf(int id[])
    {
        // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
        // to do: code goes here
        return null;
    }

    public GeoRectangle getBoundsOf(int id)
    {
        // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
        // to do: code goes here
        return null;
    }

    public int getID(GeoPoint p)
    {
        if(car.contains(p)){return car.getID();}
        return -1;
    }

    public int getID(double x, double y)
    {
        // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
        // to do: code goes here
        return getID(new GeoPoint(x,y));
    }

    public void paintHighlight(Graphics g, Scaler scale, int id, ShadeStyle style)
    {
        // This method is derived from interface uk.ac.leeds.ccg.geotools.Layer
        // to do: code goes here
    }

    public void run(){
        if(DEBUG)System.out.println("Run called");
        try{
        while(running){
            refresh();
            thread.sleep(interval);
        }
        }
        catch(InterruptedException e){
            if(DEBUG)System.out.println("interupted");
        }
        if(DEBUG)System.out.println("Stoped");
    }

    public void stop(){
        running = false;
        thread=null;
    }

    public void start(){
        stop();
        if(DEBUG)System.out.println("Try to start");
        if(!running && thread==null){
            running = true;

            thread = new Thread(this);
            thread.start();
        }
    }

    public void finalize(){
        if(DEBUG)System.out.println("stop?");
        if(running){
            if(DEBUG)System.out.println("yes");
            running = false;
            thread=null;
        }
    }

    public static void main(String args[])throws MalformedURLException, IOException {
        RemoteObjectLayer rgd = new RemoteObjectLayer(new URL("http://www.ccg.leeds.ac.uk:8080/servlets/james/ObjectPosition"));
        rgd.start();
        if(DEBUG)System.out.println("done");
        System.in.read();
        rgd.stop();
    }



}

⌨️ 快捷键说明

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