2016-10-21 5 views
0

検索バーから場所を検索する方法を実装しており、アプリケーションがマーカーを絶対に表示します。しかし、表示されたマーカーをクリックすると、トーストメッセージは表示されません。誰かが同じものを実装する方法を私に示してもらえますか? ここで使用したコードはありますが、マーカーをクリックすると緯度と経度を取得できません。Googleマップに表示されたマーカーをクリックすると緯度と経度を取得するには

import android.location.Address; 
import android.location.Geocoder; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.Toast; 

import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.GoogleMap; 
import com.google.android.gms.maps.OnMapReadyCallback; 
import com.google.android.gms.maps.SupportMapFragment; 
import com.google.android.gms.maps.model.BitmapDescriptorFactory; 
import com.google.android.gms.maps.model.LatLng; 
import com.google.android.gms.maps.model.Marker; 
import com.google.android.gms.maps.model.MarkerOptions; 

import java.io.IOException; 
import java.util.List; 

public class SearchMaps extends FragmentActivity implements OnMapReadyCallback,GoogleMap.OnMarkerClickListener { 
private GoogleMap mMap; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_search_maps); 
    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 
} 

public void onSearch(View view) { 
    EditText location_tf = (EditText) findViewById(R.id.TSearch); 
    String location = location_tf.getText().toString(); 
    List<Address> addressList = null; 

    if (location != null || !location.equals("")) { 
     Geocoder geocoder = new Geocoder(this); 
     try { 
      addressList = geocoder.getFromLocationName(location, 1); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     android.location.Address address = addressList.get(0); 
     LatLng latLng = new LatLng(address.getLatitude(), address.getLongitude()); 
     mMap.clear(); 
     mMap.addMarker(new MarkerOptions().position(latLng).title("Marker") 
       .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))); 
     mMap.animateCamera(CameraUpdateFactory.newLatLng(latLng)); 
    } 
} 


@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 


} 
@Override 
public boolean onMarkerClick(Marker marker) { 
    LatLng position = marker.getPosition(); 
    Toast.makeText(
      SearchMaps.this, 
      "Lat " + position.latitude + " " + "Long " + position.longitude,Toast.LENGTH_LONG).show(); 
    return false; 
} 
} 

答えて

0

Log.dを最初に試しましたか?トーストはコンテキストを必要とし、時にはあなたがrunOnUIThread

1

を使用してUIにToastを添付する必要があるのでちょうどあなたのonMapReadyメソッドの最後にmMap.setOnMarkerClickListener(this);を追加します。

関連する問題