2012-11-11 23 views
0

給出'地址'列表(字符串)我可以在我的Java代碼(協調類)中獲得地理編碼(經度和緯度)。如何將我的Java業務代碼添加到JavaScript頁面中?

有了地理編碼結果,我的目標是將座標放在HTML頁面中。使用Bing地圖,我寫這樣的事情:

 function GetMap() 
    { 
     // Initialize the map 
     map = new Microsoft.Maps.Map(document.getElementById("myMap"), {credentials:"MY_KEY_COMES_HERE"}); 

     // Retrieve the location of the map center 
     var center = map.getCenter(); 

     var pins = new Microsoft.Maps.EntityCollection(); 

     //[PASTE] this code is outputed by my java business code and later copy-paste here 
     var position = new Microsoft.Maps.Location(21.1833927,-71.147288); 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin) 

     var position = new Microsoft.Maps.Location(21.1822191,-71.182732); 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin) 

     var position = new Microsoft.Maps.Location(22.1188265,-73.1515302); 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin) 

     var position = new Microsoft.Maps.Location(22.1901809,-72.9447259); 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin) 

     var position = new Microsoft.Maps.Location(21.1194505,-71.92582259999999); 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin) 

      //..rest of code comes here 
     } 

的JavaScript中的代碼區手動完成;也就是說,我是system.out下的單詞[粘貼]的代碼。在這一刻,我這樣做就是爲了看到我的座標是正確的(我知道,效率低下,虛擬)。

因此,這使我想到:如何在沒有上述手動工作的情況下直接寫入HTML頁面(或javascript)。或者,如何將我的Java業務代碼與JavaScript結合起來?

+0

目前還不清楚你在最後一段談到什麼。你能展示更多的代碼嗎?我不確定我瞭解如何通過反覆複製粘貼代碼來運行程序?也許我只是誤解了這個問題,在這種情況下,進一步的澄清會有所幫助。祝你好運! :) – jmort253

+0

什麼是協調類?它使用什麼資源? – greyfairer

+1

@ jmort253你是對的,我只是編輯我的代碼來解釋我是如何做到的。感謝指針。 – adhg

回答

1

如果Java業務代碼可以在瀏覽器中運行和訪問它從客戶端瀏覽器需要的所有資源,您可以部署您的Java代碼作爲applet:Javascript to Java Applet communication

你的使用情況看起來更像你想讓它在後端服務器上的應用程序服務器中運行,並讓瀏覽器通過http調用與它通信。 Access Jersey based RESTful service using jQuery

在你的應用服務器,你必須:從JavaScript,這是最好的使用JavaEE6的JAX-RS功能,爲此,澤西島的參考實現做

class Result{ 
    public List<Pair<Long,Long>> getList(); 
    ... 
} 

@Path("/coordinates") 
public class CoordinatesResource { 

    @GET 
    @Produces 
    public Result getCoordinates(String location){ 
     return ...; 
    } 
} 

在HTML頁面中,你有什麼像:

$.getJSON("http://my.server.com/coordinates/?location=" + location, 
    function(json) { 
    for(var i = 0; i < json.list.length; i++){ 
     position = new Microsoft.Maps.Location(json.list[i].left,json.list[i].right); 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin) 
    } 
} 
+0

第二個選項是一個選項。如果你給一個像[just.another.programmer](http://stackoverflow.com/a/13334752/552792)這樣的例子,它會更有幫助。第一個選項有點過時。小程序已經死了。 – jmort253

+0

@ jmort253在靜態HTML和其中的applet以及應用程序服務器之間,運營成本存在巨大差異。而關於'applets已經死了',google'JavaFX'? – greyfairer

+0

我想你每天都會學到新的東西,因爲最近一個月的發佈只是上個月。不過,我想知道爲什麼我沒有遇到過使用這種技術的許多主要網站...... – jmort253

1

最簡單的解決方案是使用將for循環從javascript移動到java(在jsp頁面中),它將吐出評估位置。此示例假定您有一個數組myLocations,並預先填寫了所有位置數據。

<% for (int i=0; i < myLocations.length; i++) { %> 
     ///...get the coordinates (l1,l2) 
     var position = new Microsoft.Maps.Location(<%= myLocations[i].l1 %>, <%= myLocations[i].l2 %>); 

     // Creates a Pushpin 
     var pin = new Microsoft.Maps.Pushpin(position); 
     pins.push(pin); 
<% } %> 

缺點這種方法是因爲生成的JavaScript是不斷變化的,你不能在客戶端瀏覽器,導致效率低下緩存它。爲了避免它,你可以創建一個AJAX請求到一個jsp頁面,該頁面提供當前所需的位置添加。

相關問題