Android Google地图标记信息到TextView

时间:2017-09-16 09:59:19

标签: javascript android json textview maps

我想将我的标记信息发送到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

1 个答案:

答案 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();


        }
    };