0
私のアプリにはGoogleマップが含まれており、forループを使用して地図に4つのマーカーが追加されています。ジオコーダーを使用して、郵便番号、市の名前、追加されたマーカーの住所も取得できました。マーカータップは必ずしも認識されません
これはすべて動作しますが、マーカーのクリックが常に機能するとは限りません。時々、マーカーのタイトルを見るためにダブルタップをしなければならない。私は本当に理由を知らない。ここに私の完全なコード
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {
private GoogleMap mMap;
String city, adress, zip;
Marker marker;
LatLngBounds.Builder builder = new LatLngBounds.Builder();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
.findFragmentById(map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
LatLng[] point_new = new LatLng[4];
point_new[0] = new LatLng(52.4788535, 13.32730760000004);
point_new[1] = new LatLng(52.4794297, 13.313520799999992);
point_new[2] = new LatLng(52.5272885, 13.458033200000045);
point_new[3] = new LatLng(52.52603999999999, 13.488159999999993);
for (int i = 0; i < point_new.length; i++) {
drawMarker(point_new[i]);
marker = mMap.addMarker(new MarkerOptions().position(point_new[i]));
mMap.moveCamera(CameraUpdateFactory.newLatLng(point_new[i]));
}
getAdress(52.4788535, 13.32730760000004);
marker = mMap.addMarker(new MarkerOptions().position(point_new[0]).title(adress+"," + zip + "" + city));
getAdress(52.4794297, 13.313520799999992);
marker = mMap.addMarker(new MarkerOptions().position(point_new[1]).title(adress+"," + zip + "" + city));
getAdress(52.5272885, 13.458033200000045);
marker = mMap.addMarker(new MarkerOptions().position(point_new[2]).title(adress+"," + zip + "" + city));
getAdress(52.52603999999999, 13.488159999999993);
marker = mMap.addMarker(new MarkerOptions().position(point_new[3]).title(adress+"," + zip + "" + city));
for (int j = 0; j < point_new.length; j++) {
builder.include(point_new[j]);
}
LatLngBounds bounds = builder.build();
mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, 20));
}
public void drawMarker(LatLng point) {
// Creating an instance of MarkerOptions
MarkerOptions markerOptions = new MarkerOptions();
// Setting latitude and longitude for the marker
markerOptions.position(point);
// Adding marker on the Google Map
mMap.addMarker(markerOptions);
}
public void getAdress(double lat, double lng){
Geocoder geocoder = new Geocoder(MapsActivity.this, Locale.getDefault());
List<Address> addresses = null;
try {
addresses = geocoder.getFromLocation(lat,lng,1);
} catch (IOException e) {
e.printStackTrace();
}
city = addresses.get(0).getLocality();
adress = addresses.get(0).getAddressLine(0);
zip = addresses.get(0).getPostalCode();
}
}