2017-04-19 15 views
1

javascript関数を使用してHTMLページから戻り値を取得する必要があります。 私はいつもPHPのエコーを使ってこれを行い、それは動作しますが、今は難しいです。なぜなら、htmlとjavascriptを使ってそれを行う方法がわからないからです。これはJavascriptコードです)リターンとして:httpresponseを使用してhtmlからAndroid Javaクラスに値を返す方法

<?php 
    $Via = $_GET["Via"]; 

    ?> 
    <p id=Via name = Via> </p> 
    <script> 

     var Via = '<?php echo $Via; ?>'; 


     setTimeout(init(),1); 

     function init() 
     { 

     setTimeout(function(){initMapi(); },100); 

     } 


     function initMapi() { 

     var geocoder = new google.maps.Geocoder(); 

     var latlng = geocodeAddress(geocoder,Via + ",Trieste"); 



     } 

     function geocodeAddress(geocoder,address) { 

     geocoder.geocode({'address': address}, function(results, status) { 

      if (status === 'OK') { 


      } else { 
      alert('Geocode was not successful for the following reason: ' + status); 
      } 
      var latitude = results[0].geometry.location.lat().toFixed(5); 
      var longitude = results[0].geometry.location.lng().toFixed(5); 


      var latlng = {lat: parseFloat(latitude), lng: parseFloat(longitude)}; 
      var coord = '[{"lat":' + latitude + '},{"lng":' + longitude + '}]'; 
      var arr = JSON.parse(coord); 
      document.getElementById('Via').innerHTML = coord; 
      return coord; 
     }); 
     } 

     function geocodeLatLng(geocoder , latlng) { 

      geocoder.geocode({'location': latlng } , function(results, status) { 
      if (status === 'OK') { 
       if (results[0]) { 

       document.getElementById('Via').value = mysql_real_escape_string(results[0].formatted_address); 

       } else { 
       window.alert('No results found'); 
       } 
      } else { 
       window.alert('Geocoder failed due to: ' + status); 
      } 
      }); 
     } 


     </script> 
     <script async defer 
     src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB6m6fhBX0vIYDPoDJQTTUPefbFpsvYs6w"> 
     </script> 

そして私のAndroidのクラス:

package info.androidhive.materialdesign.BackgroudWorker; 

/** 
* Created by Alessandro on 27/02/2017. 
*/ 

import android.content.Context; 
import android.os.AsyncTask; 

import com.google.android.gms.maps.model.LatLng; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.util.EntityUtils; 
import org.json.JSONArray; 
import org.json.JSONObject; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.net.URI; 
import java.net.URL; 
import java.net.URLEncoder; 

import info.androidhive.materialdesign.utility.Bus; 
import xdroid.toaster.Toaster; 


public class BackgroundWorkerConvertAddressIntoLatLng extends AsyncTask<String,Void,String> { 
    Context context; 

    public boolean next = false; 
    public Bus bus ; 
    public String street ; 
    public LatLng coords = null; 
    public BackgroundWorkerConvertAddressIntoLatLng(Context ctx, Bus bus,String street) { 
     context = ctx; 
     this.street = street; 
     this.bus = bus; 
    } 
    @Override 
    protected String doInBackground(String... params) { 
     if(params[0] == "coords" && bus.Nome_Linea.equals("29 Andata")) { 
      manageBusses(params); 
     } 
     return null; 
    } 

    @Override 
    protected void onProgressUpdate(Void... values) { 
     super.onProgressUpdate(values); 
    } 

    public void manageBusses(String... params){ 

      try{ 
       String value=null; 

       String link = "http://2.234.155.73/android_TT/getCoordinates.php?Via=" + URLEncoder.encode(street+ ", Trieste", "UTF-8") ; 

       URL url = new URL(link); 
       HttpClient client = new DefaultHttpClient(); 

       HttpGet request = new HttpGet(); 

       request.setURI(new URI(link)); 

       HttpResponse response = client.execute(request); 

       BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

       StringBuffer sb = new StringBuffer(""); 

       String line=""; 

       while (true) { 
        line = in.readLine(); 
        if(line.contains("<p id")){ 
         if(line.indexOf("<p id=Via name = Via></p>") == -1){ 
          sb.append(line); 
          break; 
         }else{ 
          in = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
         } 
        }else { 
        } 
       } 
       value = sb.toString(); 
       in.close(); 
       Toaster.toast("string " + value); 

       String json_string = EntityUtils.toString(response.getEntity()); 
       JSONArray jArray = new JSONArray(json_string); 
       // JSONArray jArray = new JSONArray(value); 
       // Extract data from json and store into ArrayList as class objects 
       Toaster.toast("jArray " + jArray); 

       for (int i = 0; i < jArray.length(); i++) { 

        JSONObject json_data = jArray.getJSONObject(i); 
        double lat = json_data.getDouble("lat"); 
        double lng = json_data.getDouble("lng"); 
        coords = new LatLng(lat,lng); 
        Toaster.toast("coords " + coords.toString()); 
        next = true; 
       } 




      } catch(Exception e){ 

      } 
    } 



} 

嘆願は、私を助けて...私は本当に何をすべきかを知りません。

答えて

0

HTMLをファイルに読み込んだり、従来のファイルとして読み込めないようにすることを強くお勧めします。これは、Javaプラットフォーム用のライブラリがあり、これにより大幅に容易になります。

http://unirest.io/java.html

このライブラリは、お好みのオブジェクトにデシリアライズされるJSONレスポンスを可能にし、次のようになります。

*

にデシリアライズするデータのクラスを作成します。
public class busLocation 
{ 
    double lat; 
    double long; 
} 

*応答を取得し、私は完全にどのように理解していないよう

私が行うことができない。この部分をデシリアライズよurクエリが作成されますが、提供されたリンクはこれらのフォームの作成方法の例を示しています。

+0

gMaps webServiceへのリクエストはコードを使用していません;( –

+0

あなたの質問には多すぎるコードがありますので、何か助けが必要かどうかはわかりません。 –

関連する問題