我想将我的标记信息发送到textView,我能够做到这一点,但它始终只显示JSON的最后一个,任何好的想法如何解决这个问题?
我的计划非常简单,当用户点击Marker然后它会生成RealitveLayout" VISIBLE"它到目前为止工作,但我的问题是我从JSON收集我的Markers,然后将它们广告到MAP,
有OnClick监听器是什么造成的 (设置布局VISIBLE并将信息发送到TextView上的布局。)
IT可行,但它只接受来自JSON数组的最后一个对象。
public GoogleMap.OnInfoWindowClickListener getInfoWindowClickListener()
{
return new GoogleMap.OnInfoWindowClickListener()
{
@Override
public void onInfoWindowClick(Marker marker)
{
RelativeLayout rl1 = (RelativeLayout) findViewById(R.id.popup);
rl1.setVisibility(View.VISIBLE); // Set the View to VISIBLE
//Title to TextView (also "Score" info)
TextView pealkiriTextView = (TextView) findViewById(R.id.pealkiriTextView);
pealkiriTextView.setText(title + " (" + punkte + " punkti)");
//Description to TextView
TextView pKirlejdusTextView = (TextView) findViewById(R.id.pKirlejdusTextView);
pKirlejdusTextView.setText(kirjeldus);
}
};}
这就是我如何从JSON(来自URL)获取信息
private void getMarkers() {
StringRequest strReq = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.e("Response: ", response.toString());
try {
JSONObject jObj = new JSONObject(response);
String getObject = jObj.getString("punktid");
JSONArray jsonArray = new JSONArray(getObject);
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject jsonObject = jsonArray.getJSONObject(i);
nr = jsonObject.getString(NR);
title = jsonObject.getString(TITLE);
kirjeldus = jsonObject.getString(KIRJELDUS);
vahend = jsonObject.getString(VAHEND);
punkte = jsonObject.getString(PUNKTE);
latLng = new LatLng(Double.parseDouble(jsonObject.getString(LAT)), Double.parseDouble(jsonObject.getString(LNG)));
// Anname addMarkerile väärtused
addMarker(latLng, title, kirjeldus,punkte, nr, vahend);
}
} catch (JSONException e) {
// JSON error
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("Error: ", error.getMessage());
Toast.makeText(kaart.this, error.getMessage(), Toast.LENGTH_LONG).show();
}
});
添加标记到地图:
private void addMarker(LatLng latlng,final String nr, final String title, final String kirjeldus,final String punkte, final String vahend) {
markerOptions.position(latlng);
//markerOptions.title(title +"(" + punkte +"p)");
markerOptions.title(punkte +" Punkti");
//markerOptions.snippet(kirjeldus);
if (vahend.equalsIgnoreCase("auto")) { markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.auto));
} else { markerOptions.icon(BitmapDescriptorFactory.fromResource(R.mipmap.jala)); }
gMap.addMarker(markerOptions);} //addMarker
答案 0 :(得分:0)
要在此处获取Google地图标记信息,我创建了一个自定义信息窗口
public class CustomWindowInfo implements GoogleMap.InfoWindowAdapter {
// Use default InfoWindow frame
@Override
public View getInfoWindow(Marker arg0) {
return null;
}
// Defines the contents of the InfoWindow
@Override
public View getInfoContents(Marker arg0) {
// Getting view from the layout file info_window_layout
View v = getLayoutInflater().inflate(R.layout.custom_map_window, null);
TextView texttitle = (TextView) v.findViewById(R.id.texttitle);
TextView text_description = (TextView) v.findViewById(R.id.text_description);
texttitle.setText(arg0.getTitle());
// Setting the location to the textview
text_description.setText(arg0.getSnippet());
return v;
}}
为Google地图设置自定义信息窗口
googleMap.setInfoWindowAdapter(new CustomWindowInfo());
googleMap.setOnInfoWindowClickListener(listenerInfowindow_click);
并点击
获取标记的信息public GoogleMap.OnInfoWindowClickListener listenerInfowindow_click = new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(final Marker marker) {
AlertDialog.Builder builder = new AlertDialog.Builder(MapActivity.this);
builder.setTitle("");
builder.setMessage(dialog_mas);
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (InterNet.isConnectedToInternet()) {
Geocoder selected_place_geocoder = new Geocoder(MapActivity.this);
address = selected_place_geocoder.getFromLocationName(marker.getSnippet(), 1);
} else {
Toast.makeText(MapActivity.this,InterNet.interNetMsg, Toast.LENGTH_LONG).show();
}
dialog.cancel();
}
});
builder.setNegativeButton("N0", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
builder.show();
}
};