내 마커 용 맞춤 정보 창을 만들려면이 코드를 시도하고 있습니다. 정보가 영구적으로 나타나길 원하며 특정 로직을 기반으로 정보창의 이미지를 동적으로 변경하고 싶습니다. 아래에 나와있는 Google 검색에서 일부 코드를 적용했습니다.Android google지도 맞춤 정보 창 오류가 갑자기 닫힙니다.
public static MapActivityFragment1 newInstance(String param1, String param2) {
MapActivityFragment1 fragment = new MapActivityFragment1();
Bundle args = new Bundle();
args.putString(ARG_PARAM1, param1);
args.putString(ARG_PARAM2, param2);
fragment.setArguments(args);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_map_activity_fragment1, null, false);
SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
tv = (TextView) view.findViewById(R.id.textRefresh);
customHandler = new android.os.Handler();
customHandler.postDelayed(updateTimerThread, 0);
mMap.setInfoWindowAdapter(new BalloonAdapter(getLayoutInflater(savedInstanceState)));
return view;
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
}
private class Getdata extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
//pDialog = new ProgressDialog(MyMapActivity.this);
//pDialog.setMessage("Please wait...");
//pDialog.setCancelable(false);
//pDialog.show();
}
@Override
protected String doInBackground(String... params) {
try {
String fID= params[0];
URL url = new URL("http://******.php");
JSONObject postDataParams = new JSONObject();
postDataParams.put("fID", fID);
Log.e("params", postDataParams.toString());
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000 /* milliseconds */);
conn.setConnectTimeout(15000 /* milliseconds */);
conn.setRequestMethod("POST");
conn.setDoInput(true);
conn.setDoOutput(true);
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(getPostDataString(postDataParams));
writer.flush();
writer.close();
os.close();
int responseCode = conn.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
BufferedReader in=new BufferedReader(
new InputStreamReader(
conn.getInputStream()));
StringBuffer sb = new StringBuffer("");
String line="";
while((line = in.readLine()) != null) {
sb.append(line);
break;
}
in.close();
return sb.toString();
}
else {
return new String("false : "+responseCode);
}
} catch (Exception e) {
return new String("Exception: " + e.getMessage());
}
}
@Override
protected void onPostExecute(String result) {
String s = result.trim();
//Toast.makeText(getApplicationContext(), "restult is"+s, Toast.LENGTH_LONG).show();
String stringSucess = "";
int height = 50;
int width = 40;
BitmapDrawable bitmapdraw=(BitmapDrawable)getResources().getDrawable(R.drawable.basgray);
Bitmap b=bitmapdraw.getBitmap();
Bitmap smallMarker = Bitmap.createScaledBitmap(b, width, height, false);
LatLng sydney = new LatLng(-34, 151);
mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney").icon(BitmapDescriptorFactory.fromBitmap(smallMarker)));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
//setListAdapter(adapter);
}
}
는 여기에 내가 로그인하면 내 BallonAdapter
public class BalloonAdapter implements InfoWindowAdapter {
LayoutInflater inflater = null;
private TextView textViewTitle;
public BalloonAdapter(LayoutInflater inflater) {
this.inflater = inflater;
}
@Override
public View getInfoWindow(Marker marker) {
View v = inflater.inflate(R.layout.balloon, null);
if (marker != null) {
textViewTitle = (TextView) v.findViewById(R.id.textViewTitle);
textViewTitle.setText(marker.getTitle());
}
return (v);
}
@Override
public View getInfoContents(Marker marker) {
return (null);
}
}
의 코드이며, 응용 프로그램이 그만이 조각 온다. 시나리오에서 로그를 어디서 검색 할 수 있습니까? 아니면 별도로 기록해야합니까? 왜냐하면 안드로이드 스튜디오에 로그인 한 것도 보지 못하기 때문입니다. 문제는이 줄에 있습니다 mMap.setInfoWindowAdapter (새 BalloonAdapter (getLayoutInflater (savedInstanceState))); 공개 ViewCreateView 함수에서.