2013-11-14 4 views
1

기본적으로 사용자가 입력하면 Google지도에서 마커를 새 위치로 이동하려고합니다.JavaFX - 입력을 통해 WebView의 변수 값 업데이트

어떻게 그것을 달성하기 위해 볼 :

  1. 내가 모든 자바 스크립트 및지도 부분을 담당 html 파일을 보였습니다. 마커가 설정됩니다.

  2. 저는 HTML 파일을 JavaFX의 WebView에 삽입했습니다.

  3. 내 JavaFX 응용 프로그램에는 2 개의 텍스트가 있습니다. 그 안에는 값을 입력하고 위도와 경도의 새 값이되므로 마커가 이동합니다. 나는 '

    붙어

나는 HTML 파일, 위도와 경도에서이 개 변수를했습니다. 마커의 위치를 ​​지정합니다.

내 JavaFX 애플리케이션 작업 목록 작성자를 통해 lat와 lon 값을 어떻게 업데이트합니까? 내 코드에서 다음

html 파일은

<!DOCTYPE html> 
<html> 
    // stuff and stuff 
var map; 
function initialize() { 
    var lat = 30.76; 
    var lon = 76.74; 
    var myLatlng = new google.maps.LatLng(lat, lon); 
    var mapOptions = { 
    zoom: 12, 
    center: new google.maps.LatLng(30.75, 76.78), 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById('map-canvas'), 
     mapOptions); 

var marker = new google.maps.Marker({ 
     position: myLatlng, 
     map: map, 
     title: 'Hello World!' 
    }); 


} 

google.maps.event.addDomListener(window, 'load', initialize); 

    //stuff and stuff 
다음

내 자바 FX는 window에 할당하여 당신은 전역 범위에 넣을 수

public class GoogleApp extends Application { 



private Scene scene; 
    MyBrowser myBrowser; 
    String lat; 
    String lon; 


    public static void main(String[] args) { 
     launch(args); 
    } 

    //stuff and stuff 

    class MyBrowser extends Pane{ 

     HBox toolbar; 

     WebView webView = new WebView(); 
     WebEngine webEngine = webView.getEngine(); 



     public MyBrowser(){ 

      final URL urlGoogleMaps = getClass().getResource("demo.html"); 
      webEngine.load(urlGoogleMaps.toExternalForm()); 

      getChildren().add(webView); 

      final TextField latitude = new TextField("latitude"); 
      final TextField longitude = new TextField("longitude"); 
      Button update = new Button("Update"); 
      update.setOnAction(new EventHandler<ActionEvent>() { 

      @Override 
      public void handle(ActionEvent arg0) { 
       lat = latitude.getText(); 
       lon = longitude.getText(); 

       System.out.println(lat + lon); 
      } 
     }); 

     getChildren().addAll(latitude, longitude, update); 

     } 
    } 

} 

답변

2

파일입니다 웹 페이지에서 전역으로 볼 수있는 객체입니다. 나는. JS에서

:

자바에서
window.lat = 30.76; 
window.lon = 76.74; 

executeScript 웹 페이지의 범위에 JS 코드를 실행하고 글로벌 VAR에 값을 할당합니다 :

webEngine.executeScript("window.lat = 31.2;"); 

또한 그들을 배치 할 수 있습니다

JS :

window.coordinates = {lat: 100, lon: 250} 
객체에 0

자바 :

webEngine.executeScript("window.coordinates.lat = 31.2;"); 

UPDATE

근무 데모 : https://gist.github.com/chaschev/7481304.

+0

작동하지 않는 것 같습니다. 그들이 업데이트되고 있는지 확인하기 위해 html 파일에서 lat/lon 변수의 값으로 표시했습니다 (document.getElementById ('lbllatitude'). innerHTML = window.lat;). 그리고 아니요, (webEngine.executeScript ("window.lat = 45;");)를 실행하면 전혀 변경되지 않습니다. – satnam

+0

예를 들어 처음 본 데모에는 몇 가지 오류가 포함되어 있습니다 (즉, 'document.marker'대신 'marker'가 있어야 함). 나는 작동 요지를 만들었습니다 : https://gist.github.com/chaschev/7481304. –

+0

예 !!!!그것의 작동 !!! 많은 많은 감사 – satnam