brmap.java

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

JAVA
1,142
字号
                    .addComponent(btGoogleMap, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btMicrosoftMap, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btYahooMap, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 129, Short.MAX_VALUE)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addComponent(sbAlpha, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addComponent(btRoadView, javax.swing.GroupLayout.PREFERRED_SIZE, 79, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btSatelliteView, javax.swing.GroupLayout.PREFERRED_SIZE, 78, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btHybridView, javax.swing.GroupLayout.PREFERRED_SIZE, 77, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(btRoadView, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btSatelliteView, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(btHybridView, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(26, 26, 26)
                        .addComponent(bnZoomPlus, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(sbZoomLevel, javax.swing.GroupLayout.PREFERRED_SIZE, 118, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(bnZoomMinus, javax.swing.GroupLayout.PREFERRED_SIZE, 24, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btGoogleMap, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btMicrosoftMap, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btYahooMap, javax.swing.GroupLayout.PREFERRED_SIZE, 50, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 36, Short.MAX_VALUE)
                .addComponent(sbAlpha, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addContainerGap())
        );

        btGoogleMap.getAccessibleContext().setAccessibleName("Google");
        btMicrosoftMap.getAccessibleContext().setAccessibleName("Microsoft");
        btYahooMap.getAccessibleContext().setAccessibleName("Yahoo");
    }// </editor-fold>//GEN-END:initComponents
    */
private void btRoadViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btRoadViewActionPerformed
    setViewType(VIEW_ROAD); 
}//GEN-LAST:event_btRoadViewActionPerformed

private void btSatelliteViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btSatelliteViewActionPerformed
    setViewType(VIEW_SATELLITE);
}//GEN-LAST:event_btSatelliteViewActionPerformed

private void btHybridViewActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btHybridViewActionPerformed
    setViewType(VIEW_ROAD|VIEW_SATELLITE);
}//GEN-LAST:event_btHybridViewActionPerformed

private void sbZoomLevelStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_sbZoomLevelStateChanged
    //System.out.println("zoom from sb:" + sbZoomLevel.getValue());
    setZoomLevel(sbZoomLevel.getValue());
}//GEN-LAST:event_sbZoomLevelStateChanged

private void bnZoomPlusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnZoomPlusActionPerformed
    setZoomLevel(getZoomLevel()+1);
}//GEN-LAST:event_bnZoomPlusActionPerformed

private void bnZoomMinusActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bnZoomMinusActionPerformed
    setZoomLevel(getZoomLevel()-1);
}//GEN-LAST:event_bnZoomMinusActionPerformed

private void btGoogleMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btGoogleMapActionPerformed
    setMapProvider(MAP_GOOGLE);
}//GEN-LAST:event_btGoogleMapActionPerformed

private void btMicrosoftMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btMicrosoftMapActionPerformed
    setMapProvider(MAP_MS_LIVE);
}//GEN-LAST:event_btMicrosoftMapActionPerformed

private void btYahooMapActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btYahooMapActionPerformed
    setMapProvider(MAP_YAHOO);
}//GEN-LAST:event_btYahooMapActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    public javax.swing.JButton bnZoomMinus;
    public javax.swing.JButton bnZoomPlus;
    public javax.swing.JToggleButton btGoogleMap;
    public javax.swing.JToggleButton btHybridView;
    public javax.swing.JToggleButton btMicrosoftMap;
    public javax.swing.JToggleButton btRoadView;
    public javax.swing.JToggleButton btSatelliteView;
    public javax.swing.JToggleButton btYahooMap;
    public javax.swing.JSlider sbAlpha;
    public javax.swing.JSlider sbZoomLevel;
    // End of variables declaration//GEN-END:variables
    
    /*
     var event_cancelBubble = false;
     var event_return = false;

     window.status =  "javaevent"
        + "," + event.type //1
        + "," + event.x //2
        + "," + event.y //3
        + "," + event.button;//4
     */
    public Point2D point2LL(Point pt) {
       String boundsLL = execJS( "_fromPointToLatLng(" +
               + pt.x + "," + pt.y + ");" );
       String args[] = boundsLL.split(",");
       return new Point2D.Double(Double.parseDouble(args[0]), Double.parseDouble(args[1]));
    }

    public void processJSEvents(String st)
    {
        final String args[] = st.split(",");
        String type = args[1].toLowerCase();
        if( type.equals("mapready") ){
            SwingUtilities.invokeLater(new Runnable(){ public void run() {
                setMapReady(true);
            }});
        } else if( type.equals("foundaddress") ){
            onFoundAddress(args);
        } else if( type.equals("viewrequest") ){
            onViewRequest();
        } else if( type.equals("zoomchanged") ){
            SwingUtilities.invokeLater(new Runnable(){ public void run() {
                skipJSChanges = true;
                setZoomLevel(Integer.parseInt(args[2]));
                //System.out.println("zoom from JS:" + args[2]);
                skipJSChanges = false;
            }});
        } else if( type.equals("centerchanged") ){
            SwingUtilities.invokeLater(new Runnable(){ public void run() {
                skipJSChanges = true;
                setViewCenter(args[2] + "," + args[3]);
                skipJSChanges = false;
            }});
        } else if(isMapReady() && type.contains("mouse")){
            onMouseEvent(type, args);
        }
    }


    @Override
    public String processBrComponentEvent(BrComponentEvent e) {
        if(BrComponentEvent.DISPID_STATUSTEXTCHANGE == e.getID()){
            final String st = e.getValue();
            if( st.startsWith("javaevent,") ){
                processJSEvents(st);
                //block message echo
                execJS(":window.status=\"\"");
            }
        }
        return super.processBrComponentEvent(e);
    }

    @Override
    public void paintClientArea(Graphics g, boolean withPeer) {
        super.paintClientArea(g, withPeer);
        Rectangle _rcNewSelect = rcNewSelect;
        if(null!=_rcNewSelect){
            int iMetters = (int)distanse;
            String stDisplay = "";
            int iKm = iMetters/1000;
            if(0 < iKm){
                stDisplay = iKm + "km ";
            }
            if(iKm < 5) {
                stDisplay += (iMetters % 1000) + "m";
            }
            paintPlaceHolder(
                g,
                _rcNewSelect.x, _rcNewSelect.y, _rcNewSelect.width, _rcNewSelect.height,
                stDisplay
            );
            rcOldSelect = new Rectangle(_rcNewSelect);
        }
    }

    public boolean skipJSChanges = false;
    public void setMapProperty(
            String stName,
            Object oValue)
    {
        if( isMapReady()
            && !stURL.equals(stAboutBlank)
            && !skipJSChanges)
        {
            execJS(":_set" + stName + "(" + oValue + ");");
        }
    }


    /**
     * Holds value of property viewCenter.
     */
    private String viewCenter = "37.70,-122.44";

    /**
     * Getter for property viewCenter - the center of map "Latitude, Longitude".
     * @return Value of property viewCenter.
     */
    public String getViewCenter() {
        return viewCenter;
    }

    /**
     * Converter for property viewCenter to Point2D
     * @param center String in "latitude, longitude" format.
     * @return Parsed Point2D object.
     */
    public Point2D getPoint(String center) {
        String ll[] = center.split(",");
        return new Point2D.Double(
                Double.parseDouble(ll[0]),
                Double.parseDouble(ll[1])
        );
    }
    
    /**
     * Setter for property viewCenter.
     * @param viewCenter New value of property viewCenter.
     */
    public void setViewCenter(String viewCenter) {
        if( !viewCenter.equals(this.viewCenter) ){
            setMapProperty("Center", viewCenter);
        }
        String old = this.viewCenter;
        this.viewCenter = viewCenter;
        propertyChangeSupport.firePropertyChange("viewCenter", old, viewCenter);
    }

    /**
     * Holds value of property _viewZoomLevel.
     */
    private int viewZoomLevel = 6;

    /**
     * Getter for property _viewZoomLevel - [1..19]
     * @return Value of property _viewZoomLevel.
     */
    public int getZoomLevel() {
        return viewZoomLevel;
    }

    /**
     * Setter for property _viewZoomLevel.
     * @param _viewZoomLevel New value of property _viewZoomLevel.
     */
    public void setZoomLevel(int _viewZoomLevel) {
        int old = viewZoomLevel;
        viewZoomLevel = _viewZoomLevel;
        
        viewZoomLevel = Math.max(viewZoomLevel, ZOOM_MIN);
        viewZoomLevel = Math.min(viewZoomLevel, mapInfos[mapProvider].getMaxZoomLevel());
        bnZoomPlus.setEnabled(
                viewZoomLevel<mapInfos[mapProvider].getMaxZoomLevel());
        bnZoomMinus.setEnabled(
                viewZoomLevel>1);
        //System.out.println("Zoom:" + toString() + "we set:" + viewZoomLevel);        
        sbZoomLevel.setValue(viewZoomLevel);        
        if( old!=viewZoomLevel ){
            setMapProperty("ZoomLevel", viewZoomLevel);
        }
        propertyChangeSupport.firePropertyChange("viewZoomLevel", old, viewZoomLevel);
    }

    /**
     * Holds value of property _viewType.
     */
    private int viewType = VIEW_ROAD;

    /**
     * Getter for property viewType - combination of VIEW_XXXX consts
     * @return Value of property viewType.
     */
    public int getViewType() {
        return viewType;
    }

    /**
     * Setter for property viewType.
     * @param _viewType New value of property viewType.

⌨️ 快捷键说明

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