Yani bulun burada benim problem Bu gibi ayrı işaretçileri tarafından: Arama işaretçileri ve onlara
//Carciuma
LatLng test1 = new LatLng(43.604892, 1.476562);
mMap.addMarker(beerMarker.position(test1).title("Carciuma"));
Ben aşağıdaki yöntemler ilan ettiler:
private void gotoLocation(double lat, double lng, float zoom){
LatLng latLng = new LatLng(lat, lng);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(latLng, zoom);
mMap.moveCamera(update);
}
private void hideSoftKeyboard(View v){
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
public void locateFromString(View view) {
hideSoftKeyboard(view);
TextView tv = (TextView) findViewById(R.id.editText1);
String searchString = tv.getText().toString();
Haritalarımda, yalnızca dizimin dizileri içinde arama yapmak istediğim bir arama alanı oluşturdum. Dolayısıyla, kullanıcı tarafından tanıtılan işaretçi ismini bulmak için arama düğmesine bastığımda locateFromString yöntemi çağrılır. Bu yöntem, kullanıcı tarafından tanıtılan işaretin dizide var olup olmadığını görmelidir. Varsa, aranan işaretin dizide olmadığını belirten bir Tost görüntülenmemesi durumunda gotoLocation yöntemi ile konumlandırılmalıdır.
Bunu tam olarak nasıl yapmak zorundayım? Dizinin içinde arama yapın ve adı bulmak için isim bulunursa?
Yanıtlarınız için şimdiden teşekkür ederiz!
GÜNCELLEME
public class MainActivity extends AppCompatActivity implements OnMapReadyCallback {
GoogleMap mMap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
assert getSupportActionBar() != null;
ActionBar actionBar = getSupportActionBar();
actionBar.setLogo(R.mipmap.ic_launcher);
actionBar.setDisplayUseLogoEnabled(true);
actionBar.setDisplayShowHomeEnabled(true);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.location:
Toast.makeText(getApplicationContext(), "Location selected", Toast.LENGTH_LONG).show();
return true;
case R.id.map_type:
Toast.makeText(getApplicationContext(), "Map Type selected", Toast.LENGTH_LONG).show();
return true;
case R.id.share_app:
Toast.makeText(getApplicationContext(), "Share the APP", Toast.LENGTH_LONG).show();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng cityView = new LatLng(43.604346, 1.443760);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(cityView, 12));
MarkerOptions beerMarker = new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.beer_marker));
// The Thirsty monk
LatLng thirstyMonk = new LatLng(43.607044, 1.450307);
mMap.addMarker(beerMarker.position(thirstyMonk).title("Thirsty Monk"));
// The Cocolino
LatLng cocolino = new LatLng(43.571505, 1.417759);
mMap.addMarker(beerMarker.position(cocolino).title("Cocolino"));
//The Melting Pot
LatLng meltingPot = new LatLng(43.607469, 1.447162);
mMap.addMarker(beerMarker.position(meltingPot).title("The Melting Pot"));
//De Danu
LatLng deDanu = new LatLng(43.600723, 1.455917);
mMap.addMarker(beerMarker.position(deDanu).title("De Danu"));
//Carciuma
LatLng test1 = new LatLng(43.604892, 1.476562);
mMap.addMarker(beerMarker.position(test1).title("Carciuma"));
//Test2
LatLng test2 = new LatLng(43.604496, 1.474924);
mMap.addMarker(beerMarker.position(test2).title("Boca"));
//Test3
LatLng test3 = new LatLng(43.604781, 1.474502);
mMap.addMarker(beerMarker.position(test3).title("Bar Acasa"));
}
private void gotoLocation(double lat, double lng, float zoom){
LatLng latLng = new LatLng(lat, lng);
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(latLng, zoom);
mMap.moveCamera(update);
}
private void hideSoftKeyboard(View v){
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
public void locateFromString(View view) {
hideSoftKeyboard(view);
TextView tv = (TextView) findViewById(R.id.editText1);
String searchString = tv.getText().toString();
ArrayList<String> thePlaces = new ArrayList<>();
thePlaces.add("Thirsty Monk");
thePlaces.add("Cocolino");
thePlaces.add("The Melting Pot");
thePlaces.add("De Danu");
thePlaces.add("Carciuma");
thePlaces.add("Boca");
thePlaces.add("Bar Acasa");
ArrayList<String> places = new ArrayList<String>(Arrays.asList(thePlaces));
if (places.contains(searchString)) {
//do something
};
// if (thePlaces.contains(searchString)){
//if (searchString.length() > 0){
// Toast.makeText(this, "Searching for: " + searchString, Toast.LENGTH_SHORT).show();
//} else {
// Toast.makeText(this, "There is no " + searchString + " subscribed to this app!", Toast.LENGTH_LONG).show();
// }
//Geocoder gc = new Geocoder(this);
}
}
son satırları Ben orta bunu böylece çalıştı bazı şeyler vardır!
GÜNCELLEME burada XML Ben Otomatik tamamlamada ile EditText değişti:
04-02 19: 42: 08.791 11.984-11.984/com.gadgetcatch.happyhourtoulouse İşte
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.gadgetcatch.happyhourtoulouse.MainActivity">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:id="@+id/search_pub"
android:paddingLeft="10dp"
android:paddingRight="10dp">
<AutoCompleteTextView
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_toLeftOf="@+id/button1"
android:layout_toStartOf="@+id/button1"
android:ems="10"
android:hint="@string/search_pub"
android:inputType="textCapWords">
<requestFocus />
</AutoCompleteTextView>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:text="@string/search_go"
android:onClick="locateFromString"/>
</RelativeLayout>
<fragment
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"/>
</LinearLayout>
o günlüğü olduğu E/AndroidRuntime: FATAL EXCEPTION: ana İşlem: com.gadgetcatch.happyhourtoulouse, PID: 11984 java.lang.IllegalStateException: android için yöntem yürütülemedi: onClick , android.support.v7.app.AppCompatVi android.view.View $ PerformClick.run (View.java:21179) android de de android.view.View.performClick (View.java:5254) de ewInflater $ DeclaredOnClickListener.onClick (AppCompatViewInflater.java:293) . android.app adresinde, android.os.Looper.loop (Looper.java:145) adresinde, android.app adresinde bulunan adresinde yer almaktadır. Java.lang.reflect.Method.invoke (Yerel Yöntem) at java.lang.reflect.Method.invoke (Yöntem.java:372) at.android.internal .işletim sistemi. com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199) de ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1404) Nedeni: java.lang.reflect de java.lang.reflect.InvocationTargetException .Method.invoke (Yerel Yöntem) java.lang.reflect.Method.invoke (Yöntem.java: 372) at android.support.v7.app.AppCompatViewInflater $ DeclaredOnClickListener.onClick (AppCompatViewInflater.java:288) at android.view.View.performClick (View.java:5254) at android.view.View $ Android.os.Looper adresindeki android.os.Handler.dispatchMessage (Handler.java:95) adresindeki android.os.Handler.handleCallback (View.java:21179) 'da (View.java:21179) ViewClick.run (View.java:21179) . loop (Looper.java:145) at android.app.ActivityThread.main (ActivityThread.java:6837) java.lang.reflect.Method.invoke adresinden (Yerel Yöntem) java.lang.refle adresinde com.android.internal.os.ZygoteInit.main (ZygoteInit.) adresinde com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1404) numaralı telefondan (Method.java:372) . java: 1199) Nedeniyle: java.lang.NullPointerException: sanal bir yöntem 'boolean java.util.ArrayList.contains (java.lang.Object)' öğesini, null object reference çağrısında com.gadgetcatch.happyhourtoulouse.MainActivity olarak çağırmayı deneyin. java.lang.reflect.Method.invoke (Yerel Yöntem) adresindeki java.lang.reflect.Method.invoke (Method.java:372) adresindeki android.support.v7 adresindeki .locateFromString (MainActivity.java:182) . app.AppCompatViewInflater $ DeclaredOnClickListener.onClick (APPC ompatViewInflater.java:288) android.view.View.performDaha sonra (View.java:5254) , android.view.View $ PerformClick.run (View.java:21179) at android.os.Handler.handleCallback (ompatViewInflater.java:288) Handler.java:739) android.os.Looper.loop (Looper.java:145) 'de , android.app.ActivityThread.main (ActivityThread) adresinden android.os.Handler.dispatchMessage (Handler.java:95) . java: 6837) java.lang.reflect.Method.invoke adresinde (Yerel Yöntem) java.lang.reflect.Method.invoke adresinde (Yöntem.java:372) com.android.internal.os.ZygoteInit $ MethodAndArgsCalle com.android.internal.os.ZygoteInit.main de r.run (ZygoteInit.java:1404) (ZygoteInit.java:1199)
ArrayList thePlaces = new ArrayList <>(); thePlaces.add ("Susuz Keşiş"); thePlaces.add ("Cocolino"); thePlaces.add ("Erime Kazanı"); thePlaces.add ("De Danu"); thePlaces.add ("Carciuma"); thePlaces.("Boca") ekleyin; thePlaces.add ("Bar Acasa"); Yukarıdaki gibi ArrayList olarak değiştirdim. Bunu yapamayacağımı düşündüğünüz kodu nereden almalıyım? –
Simgelerin yerini çözemediğini söyler ... –
'searchString' kullanıcı girişini temsil ediyor mu? Öyleyse, 'locateFromString' yönteminde' searchString' başlatmasının hemen altına koyun. –