簡體   English   中英

將數據從Bean傳遞到jsf頁面上的javascript。 Google API指示

[英]Pass data from Bean to javascript on jsf page. Google api directions

我需要將航點從ManagedBean傳遞到google maps javascript方向api到jsf頁面。 我正在嘗試制作JSONArray並將其傳遞給jsf:

private JSONArray routesJSON;

與吸氣劑和二傳手。

比我創建JSON:在循環中我將帶有​​LatLang航路點的字符串添加到List<String>

routes.add("new google.maps.LatLng(" + o.getLatitude() + "," + o.getLongitude()+")");

我正在獲取JSON:

[{"location":"new google.maps.LatLng(50.495121,22.1705)"},{"location":"new google.maps.LatLng(50.57082,22.06813)"},{"location":"new google.maps.LatLng(50.570549,22.047871)"},{"location":"new google.maps.LatLng(50.521389,21.912695)"},{"location":"new google.maps.LatLng(50.495121,22.1705)"}]

從:

for()
array.put(obj);
}
System.out.println(array);

在JSF函數中顯示路線:(它適用於硬編碼數據)

function calcRoute() {

              var waypts = [];                 
              var start = new google.maps.LatLng(#{someBean.startLatitude}, #{someBean.startLongitude});            
              var end = new google.maps.LatLng(49.712112, 21.50667);
              var way = #{someBean.routesJSON};
              var request = {
              origin:start,
              destination:end,
              optimizeWaypoints: true,                        
              waypoints:way;         
              travelMode: google.maps.TravelMode.DRIVING
              };
              directionsService.route(request, function(result, status) {
                if (status == google.maps.DirectionsStatus.OK) {
                  directionsDisplay.setDirections(result);
                }
              });
            }

但是,當即時通訊顯示該頁面地圖不會出現。 我知道這可能是因為JSON中的" ,但我不知道如何刪除它。或者也許有最簡單的方法將Bean的航點數據傳遞到jsf頁面?

與其返回包含諸如“ new google.maps.LatLng(50.495121,22.1705)”之類的javascript語句的JSON數據包,不如只返回坐標。

因此,如果您的javascript中有一個看起來像這樣的JSON數據包(我不知道如何在Java和Javascript之間傳遞數據):

var routes = [
  {"lat":"50.495121", "lng":"22.1705"},
  {"lat":"50.57082", "lng":"22.06813"},
  {"lat":"50.570549", "lng":"22.047871"},
  {"lat":"50.521389", "lng":"21.912695"},
  {"lat":"50.495121", "lng":"22.1705"}
]

您可以將其變成一個數組,如下所示:

var way = [];
for (var i = 0; i < routes.length; i++) {
  way.push(new google.maps.LatLng(parseFloat(routes[i].lat), parseFloat(routes[i].lng)));
}

注意:使用parseFloat可以將“ 50.495121”之類的字符串轉換為浮點數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM