2017-07-11 11 views
0

Googleマップを使用してアプリを開発しています。特定の情報(店舗タイトル、店舗住所、電話番号など)を持つマーカーを作成しました。マーカーをクリックすると、情報ウィンドウが必要な情報で開きますが、情報ウィンドウをクリックすると、新しいアクティビティ(DetailedInformation.java)に各マーカーの情報を表示します。私はインテントを新しい活動に使用しています。以下は私のコードです:あなたの詳細アクティビティののonCreateメソッドでAndroid:Googleマップの断片。新しいアクティビティにマーカー情報を表示

GoogleMapsFragment.java

package com.user.sa.someapp; 

import android.Manifest; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.app.Fragment; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.TextView; 
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; 

public class GoogleMapsFragment extends Fragment implements OnMapReadyCallback { 

private final static int MY_PERMISSION_FINE_LOCATION = 101; 

GoogleMap map; 

public GoogleMapsFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.fragment_google_maps, container, false); 
    return v; 
} 

@Override 
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    SupportMapFragment mapFragment = (SupportMapFragment) 
      getChildFragmentManager().findFragmentById(R.id.map1); 
    mapFragment.getMapAsync(this); 
} 

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

    if (map != null) { 
     map.setInfoWindowAdapter(new GoogleMap.InfoWindowAdapter(){ 

      @Override 
      public View getInfoWindow(Marker marker) { 
       return null; 
      } 

      @Override 
      public View getInfoContents(Marker marker) { 
       View v = getActivity().getLayoutInflater().inflate(R.layout.infowindow_layout, null); 
       TextView storeTitle = (TextView) v.findViewById(R.id.store_title); 
       TextView storeSnippet = (TextView) v.findViewById(R.id.store_snippet); 
       storeTitle.setText(marker.getTitle()); 
       storeSnippet.setText(marker.getSnippet()); 
       return v; 
      } 
     }); 
    } 

    map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
     @Override 
     public void onInfoWindowClick(Marker marker) { 
      Intent intent = new Intent(GoogleMapsFragment.this.getActivity(), DetailedInformation.class); 
      startActivity(intent); 
     } 
    }); 

    // MARKERS 

    LatLng store1 = new LatLng(55.000000, 21.000000); 
    map.addMarker(new MarkerOptions().position(store1) 
      .title("SOME STORE") 
      .snippet("Cool Store \n\n Store address 1, \n\n +370 000 00000 \n\n [email protected] \n www.example.com") 
      .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN)) 
    ); 
    map.moveCamera(CameraUpdateFactory.newLatLng(store1)); 

    if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
     map.setMyLocationEnabled(true); 
    } else { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, MY_PERMISSION_FINE_LOCATION); 
     } 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case MY_PERMISSION_FINE_LOCATION: 
      if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       if (ActivityCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { 
        map.setMyLocationEnabled(true); 
       } 
      } 
      break; 
    } 
} 
} 
+0

あなただけのタイトルを渡し、新しい活動にスニペットたいですInfoWindowをクリックするとどうなりますか? –

+0

私は質問を得るが、私は本当に問題を起こさない。新しい活動が開かれない、または..? – nada

+0

@DanielNugentはい、タイトルとスニペットを新しいアクティビティに渡したいと思います。情報ウィンドウをクリックすると、空白アクティビティが開きます。私はそれにマーカーの情報を表示したい –

答えて

0
map.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() { 
    @Override 
    public void onInfoWindowClick(Marker marker) { 
     Intent intent = new Intent(GoogleMapsFragment.this.getActivity(), DetailedInformation.class); 
     intent.putExtra("title", marker.getTitle()); 
     intent.putExtra("snippet", marker.getSnippet()); 
     startActivity(intent); 
    } 
}); 

String title = getIntent().getStringExtra("title"); 
String snippet = getIntent().getStringExtra("snippet"); 
+0

あなたの答えをありがとう。まだ動作しません。情報なしで空白アクティビティが開きます。種類:Piotr –

+0

情報を表示するためにそのアクティビティのレイアウトを作成するのはどうですか? – FerDensetsu

+0

私はもう一度あなたの答えに感謝したいと思います。私は新しいレイアウトとTextViewを作成し、コードを少し変更しました: ** DetailedInformation.java ** 'TextView storeTitle =(TextView)findViewById(R.id.store_title); storeTitle.setText(getIntent()。getStringExtra( "title")); ' –