brmap.java

来自「java调用ie浏览器demo源码,可以用在windows或者linux」· Java 代码 · 共 1,142 行 · 第 1/4 页

JAVA
1,142
字号
     */
    public void setViewType(int _viewType) {
        int old = viewType;
        viewType = _viewType;
        
        if( old!=viewType ){
            setMapProperty("View", _viewType);
        }

        int iVM = viewType & 3;
        btRoadView.setSelected(VIEW_ROAD==iVM);
        btSatelliteView.setSelected(VIEW_SATELLITE==iVM);
        btHybridView.setSelected((VIEW_ROAD|VIEW_SATELLITE)==iVM);

        propertyChangeSupport.firePropertyChange("viewType", old, viewType);
    }

    /**
     * Holds value of property mapProvider.
     */
    private int mapProvider = MAP_MS_LIVE;

    /**
     * Getter for property mapProvider - MAP_XXXX const
     * @return Value of property mapProvider.
     */
    public int getMapProvider() {
        return mapProvider;
    }

    /*
        final String _stViewState = (null==stViewState && stURL.equals(stAboutBlank))
                ? null
                : ((null==stViewState)
                    ? execJS("_getViewDescriptor();")
                    : stViewState);
        if(null!=_stViewState){
            String args[] = _stViewState.split(",");
            if(2<=args.length){
                setViewCenter(args[0] + "," + args[1]);
            }
            if(3<=args.length){
                setZoomLevel( Math.min(
                    Integer.parseInt(args[2]),
                    mapInfos[getMapProvider()].getMaxZoomLevel()));
            }
            if(4<=args.length){
                setViewType(Integer.parseInt(args[3]));
            }
        }
    */
    /**
     * Setter for property _mapProvider.
     * @param _mapProvider New value of property _mapProvider.
     */
    public void setMapProvider(int _mapProvider) {
        if(isMapReady()){
            //viewCenter = execJS("_getCenter()");
            setMapReady(false);
        }
        int old = mapProvider;
        mapProvider = _mapProvider;

        skipJSChanges = true;
        setZoomLevel(viewZoomLevel);
        skipJSChanges = false;
        setURL( mapInfos[mapProvider].getHTMLFile()
            /*+ "?" + viewCenter
            + "," + viewZoomLevel
            + "," + viewType*/);
        //set the limits
        btGoogleMap.setSelected(MAP_GOOGLE==mapProvider);
        btMicrosoftMap.setSelected(MAP_MS_LIVE==mapProvider);
        btYahooMap.setSelected(MAP_YAHOO==mapProvider);

        propertyChangeSupport.firePropertyChange("mapProvider", old, mapProvider);
    }
    
    public void onViewRequest()
    {
        execJS("_setViewDescriptor(" 
            + viewCenter
            + "," + viewZoomLevel
            + "," + viewType 
            + ");" );
    }
    
    public void onFoundAddress(final String args[])
    {
        SwingUtilities.invokeLater(new Runnable(){ public void run() {        
            if( 4 != args.length){
                JOptionPane.showConfirmDialog(
                    BrMap.this,
                    "The address was not found.",
                    "Warning",
                    JOptionPane.DEFAULT_OPTION,
                    JOptionPane.ERROR_MESSAGE);
            } else {
                setViewCenter(args[2] + "," + args[3]);
            }        
        }});//end posponed operation
    }

    public void onSelectionRectChanged(Rectangle rc, boolean bShow)
    {}

    final static int FREE_MOVE = 0; //free mouse move
    final static int SHOW_ZOOM_RECT = 1; //drow rect from ancor
    final static int HIDE_ZOOM_RECT = 2; //drow rect from ancor

    double distanse = 0.0;
    Rectangle rcOldSelect = null;
    Rectangle rcNewSelect = null;

    int map_state = FREE_MOVE;
    Point   ancor;
    Point2D ancorLL;
    
    public void onMouseEvent(final String type, final String args[])
    {
        Point pos = new Point(Integer.parseInt(args[2]), Integer.parseInt(args[3]));
        final Point2D posLL = point2LL(pos);
        //System.out.println("posLL:" + posLL);
        int button = Integer.parseInt(args[4]);

        if(FREE_MOVE==map_state && 2==button){
            map_state = SHOW_ZOOM_RECT;
            ancor = pos;
            ancorLL = posLL;
        } else  if(
             ( SHOW_ZOOM_RECT==map_state && 0==(2 & button) )
          || ( SHOW_ZOOM_RECT==map_state && 2==button && "mouseup".equals(type))
        ){
            if(null!=ancor && !isSelectionMode()){
                SwingUtilities.invokeLater(new Runnable(){ public void run() {
                    skipJSChanges = true;
                    setZoomLevel(getBestZoomLevel(
                           ancorLL.getX(), ancorLL.getY(),
                           posLL.getX(), posLL.getY()));
                    setViewCenter( ((ancorLL.getX() + posLL.getX())/2)
                           + "," + ((ancorLL.getY() + posLL.getY())/2) );
                    skipJSChanges = false;
                    execJS( ":_setViewDescriptor("
                           + getViewCenter()
                           + "," + getZoomLevel() + ")" );
                    /*
                    execJS( ":setTimeout(\"_setViewDescriptor("
                           + getViewCenter()
                           + "," + getZoomLevel()
                           + ");\", 0);" );
                    */
                }});
            }
            //hide ZoomRect
            ancor = null;
            rcNewSelect = null;
            if(null!=rcOldSelect){
                onSelectionRectChanged(rcOldSelect, false);
                repaint(rcOldSelect);
            }
            rcOldSelect = null;
        } else if(SHOW_ZOOM_RECT==map_state && null!=ancor ){
            if(2==button){
                execJS( ":event_returnValue=true;event_cancelBubble=true;");
            }
            distanse = getDistance(
            //distanse = getDistanceInPixel(
                ancorLL.getX(), ancorLL.getY(),
                posLL.getX(), posLL.getY());
            //System.out.print(ancorLL.getX() + "," + ancorLL.getY() + "\n");
            if(null!=rcOldSelect){
                repaint(rcOldSelect);
            }
            rcNewSelect = new Rectangle(
                Math.min(ancor.x, pos.x),
                Math.min(ancor.y, pos.y),
                Math.abs(ancor.x - pos.x),
                Math.abs(ancor.y - pos.y)
            );
            onSelectionRectChanged(rcNewSelect, true);
            repaint(rcNewSelect);
        } else {
            map_state = FREE_MOVE;
        }
        setMouseGeoPos( new BrMapMousePos(pos, posLL) );
    }
    
    /**
     * Mouse geo and ordinal position holder.
     */
    public BrMapMousePos mouseGeoPos;

    /**
     * Get the value of mouseGeoPos.
     * @return the value of mouseGeoPos
     */
    public BrMapMousePos getMouseGeoPos() {
        return mouseGeoPos;
    }

    /**
     * Set the value of mouseGeoPos.
     * @param mouseGeoPos new value of mouseGeoPos
     */
    public void setMouseGeoPos(BrMapMousePos mouseGeoPos) {
        BrMapMousePos old = this.mouseGeoPos;
        this.mouseGeoPos = mouseGeoPos;
        propertyChangeSupport.firePropertyChange("mouseGeoPos", old, mouseGeoPos);
    }

    /**
     * Hold map script object state
     */
    public boolean mapReady = false;

    /**
     * Get the value of mapReady
     * @return the value of mapReady
     */
    public boolean isMapReady() {
        return mapReady;
    }

    /**
     * Set the value of mapReady
     * @param mapReady new value of mapReady
     */
    public void setMapReady(boolean _mapReady) {
        boolean old = mapReady;
        mapReady = _mapReady;
        if(null!=bnZoomMinus){
            btGoogleMap.setEnabled(mapReady);
            btHybridView.setEnabled(mapReady);
            btMicrosoftMap.setEnabled(mapReady);
            btRoadView.setEnabled(mapReady);
            btSatelliteView.setEnabled(mapReady);
            btYahooMap.setEnabled(mapReady);
            sbZoomLevel.setEnabled(mapReady);
            bnZoomMinus.setEnabled(mapReady);
            bnZoomPlus.setEnabled(mapReady);
            setZoomLevel(getZoomLevel());
        }    
        propertyChangeSupport.firePropertyChange("mapReady", old, mapReady);
    }

    /**
     * Holds right-mouse click rectangle selection mode
     */
    public boolean selectionMode = false;

    /**
     * Get the value of selectionMode
     * @return the value of selectionMode
     */
    public boolean isSelectionMode() {
        return selectionMode;
    }

    /**
     * Set the value of selectionMode
     * @param selectionMode new value of selectionMode
     */
    public void setSelectionMode(boolean selectionMode) {
        boolean old = this.selectionMode;
        this.selectionMode = selectionMode;
        propertyChangeSupport.firePropertyChange("selectionMode", old, selectionMode);
    }

    @Override
    public void setURL(String _stURL) {
        setMapReady(false);
        super.setURL(_stURL);
    }
}

class JBottomSlider extends JSlider
{
    @Override
    public void reshape(int x, int y, int width, int height) {
        Rectangle rc = getParent().getBounds();
        y = rc.height - height - 3;
        super.reshape(x, y, width, height);
    }
}

⌨️ 快捷键说明

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