2017-02-13 6 views
0

Je travaille actuellement dans Android Studio. Ci-dessous le code dans mon fichier java, jusqu'à présent, je suis capable de trouver un emplacement basé sur une entrée que j'ai spécifié dans le code. Je voudrais plutôt avoir 2 emplacements de texte d'édition séparés où je peux entrer la longitude et la latitude, puis appuyer sur un bouton pour trouver l'emplacement.Comment trouver un emplacement en fonction de la longitude et de la latitude que l'utilisateur saisit?

import android.app.Activity; 
import android.os.Bundle; 
import android.preference.PreferenceManager; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 

import org.osmdroid.views.MapView; 
import org.osmdroid.util.GeoPoint; 
import org.osmdroid.config.Configuration; 

public class HelloMap extends Activity 
{ 

    MapView mv; 

    public void onCreate(Bundle savedInstanceState) 
    { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_hello_map); 


     Configuration.getInstance().load 
       (this, PreferenceManager.getDefaultSharedPreferences(this)); 

     mv = (MapView)findViewById(R.id.map1); 

     mv.setBuiltInZoomControls(true); 
     mv.getController().setZoom(14); 
     mv.getController().setCenter(new GeoPoint(51.05,-0.72)); 
    }} 

Je vais aussi inclure mon activité principale au cas où il y aurait de l'aide.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 

    <org.osmdroid.views.MapView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:enabled="true" 
     android:clickable="true" 
     android:id="@+id/map1" 
     tilesource="Mapnik" 
     /> 

    <EditText 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:inputType="number" 
    android:id="@+id/latet" 
    /> 
    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="number" 
     android:id="@+id/longet" 
     android:layout_below="@id/latet" 
     /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/lattv" 
     /> 
    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/longtv" 

     /> 
</RelativeLayout> 

Je ne suis pas sûr de savoir comment le faire de sorte que toute aide serait appréciée :)

Répondre

0

Ce que vous devez faire est de connecter votre TextView est dans l'activité elle-même, puis une action de la touche effectuer l'action que vous définissez, ceci est un exemple approximatif.

Il suffit de mettre à jour vos textviews être EditText, et ajouter un bouton avec le même ID que dans le findViewById()

MapView mv; 
EditText latitude; 
EditText longitude; 

Button showLocationButton; 

public void onCreate(Bundle savedInstanceState) 
{ 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_hello_map); 


    Configuration.getInstance().load 
      (this, PreferenceManager.getDefaultSharedPreferences(this)); 

    mv = (MapView)findViewById(R.id.map1); 
    latitude = (EditText)findViewById(R.id.lattv); 
    longitude = (EditText)findViewById(R.id.longtv); 
    showLocationButton = (Button)findViewById(R.id.showlocationbtn); 

    showLocationButton.setOnClickListener(new View.OnClickListener() 
      { 
       @Override 
       public void onClick(View view) 
       { 
        showLocation(Double.parseDouble(latitude.getText().toString()), Double.parseDouble(longitude.getText().toString())); 
       } 
      }) 

    mv.setBuiltInZoomControls(true); 
    mv.getController().setZoom(14); 
    mv.getController().setCenter(new GeoPoint(51.05,-0.72)); 
}} 

private void showLocation(double latitude, double longitude) 
{ 
    mv.getController().setCenter(new GeoPoint(latitude, longitude)); 
}