나는 "MarkerOptions"이 (가령, 이름, 이메일, 주소 등) 다른 필드를 가지고있는 db (MySQL)에 저장된 마커를 표시하는지도를 가지고 있습니다. 오직 ".tittle", ". snippet"을 사용하고 싶습니다. 내가 부착하고 싶은 필드가 빠져 있습니다. 이제는 원하는 모든 필드를 보여주기 위해 사용자 정의 정보 윈도우를 사용해야 만합니다. 내가 어떻게 할 수 있니? 내 코드 :MySQL과 함께 사용자 정의 INFOWINDOW 사용하기
홈페이지 :
ArrayList<HashMap<String, String>> location = null;
String url = "http://appserver.eco.mx/movil/getLanLong.php";
try {
JSONArray data = new JSONArray(getHttpGet(url));
location = new ArrayList<HashMap<String, String>>();
HashMap<String, String> map;
for(int i = 0; i < data.length(); i++){
JSONObject c = data.getJSONObject(i);
map = new HashMap<String, String>();
map.put("id", c.getString("id"));
map.put("campo_latitud", c.getString("campo_latitud"));
map.put("campo_longitud", c.getString("campo_longitud"));
map.put("campo_categoria", c.getString("campo_categoria"));
map.put("campo_estado", c.getString("campo_estado"));
location.add(map);
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
String campouno = "";
if(!TextUtils.isEmpty(campouno)){
double campo_latitud = Double.parseDouble(campouno);
}
//campo_latitud = Double.parseDouble(location.get(0).get("Latitude").toString());
String campodos = "";
if(!TextUtils.isEmpty(campodos)){
double campo_longitud = Double.parseDouble(campodos);
}
for (int i = 0; i < location.size(); i++) {
if(!TextUtils.isEmpty(location.get(i).get("campo_latitud").toString())&&!TextUtils.isEmpty(location.get(i).get("campo_longitud").toString())) {
campo_latitud = Double.parseDouble(location.get(i).get("campo_latitud").toString());
campo_longitud = Double.parseDouble(location.get(i).get("campo_longitud").toString());
}
String name = location.get(i).get("campo_categoria").toString();
//String des = location.get(i).get("campo_descripcion").toString();
if(location.get(i).get("campo_categoria").toString().equals("Obras publicas")){
//System.out.println(location.get(i).get("campo_descripcion").toString());
googleMap.addMarker(new MarkerOptions().position(new LatLng(campo_latitud, campo_longitud)).title(name).icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_op)));
}
}}
XML :
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@android:color/white">
<TextView
android:id="@+id/info_window_nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:paddingLeft="5dp"
android:text="Carlo Estrada Solano" />
<TextView
android:id="@+id/info_window_placas"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="20sp"
android:layout_below="@id/info_window_nombre"
android:paddingLeft="5dp"
android:text="Placas: SX5487" />
<TextView
android:id="@+id/info_window_estado"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/info_window_placas"
android:paddingLeft="5dp"
android:text="Estado: Activo" />
</LinearLayout>
개의 InfoWindow 클래스 :
public class AdaptadorInforWindow implements GoogleMap.InfoWindowAdapter {
private static final String TAG = "CustomInfoWindowAdapter";
private LayoutInflater inflater;
public AdaptadorInforWindow(LayoutInflater inflater){
this.inflater = inflater;
}
@Override
public View getInfoWindow(Marker marker) {
//Carga layout personalizado.
View v = inflater.inflate(R.layout.infowindow_layout, null);
String[] info = marker.getTitle().split("&");
String url = marker.getSnippet();
((TextView)v.findViewById(R.id.info_window_nombre)).setText("Lina Cortés");
((TextView)v.findViewById(R.id.info_window_placas)).setText("Placas: SRX32");
((TextView)v.findViewById(R.id.info_window_estado)).setText("Estado: Activo");
return v;
}
@Override
public View getInfoContents(Marker marker) {
return null;
}
}
설정 GoogleMap으로 :
myGoogleMap.setInfoWindowAdapter(new CustomInfoWindowAdapter(LayoutInflater.from(getActivity())));
코드가 정상적으로 보입니다. 어떤 문제? –
나는 그것이 잘 작동하지만 내가 원하는 것은하지 않는다는 것을 의미한다. 나는 costum infowindow를 사용하고 싶다. 그러나 XML에서 나는 이름, 주소 등을 적는다. 나는 이름과 주소를 데이터베이스에서 가져오고 싶다. costum infowindow @LalitSinghFauzdar로 설정하십시오. – Armando