简体   繁体   中英

Creating fragment for my marker information when i click on the marker

I want my markersto open a fragment on top of the map when I click on them. This fragment will show some text . I want this fragment to overlay only a part of the googlemap and to be closeable. I already have some basic info in the 'snippet' that opens one click, but i want a better view of the info I have. Please kindly help

Here is my .java file

import android.support.v4.app.FragmentActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
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.MarkerOptions;

public class MapsActivity extends FragmentActivity implements  OnMapReadyCallback {

private GoogleMap mMap;

final Button button1 = (Button) findViewById(R.id.buttonMaps);
final Button button2 = (Button)findViewById(R.id.buttonMaps2);
final Button button3 = (Button)findViewById(R.id.buttonMaps3);

@Override
protected void onCreate(Bundle savedinstancestate) {
     super.onCreate(savedinstancestate);
    setContentView(R.layout.activity_maps);

    button1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            mMap.clear();
            if (button1.isShown()) {

                mMap.addMarker(new MarkerOptions().position(new LatLng(, )).title("").snippet("My Location").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));

 {
          @Override
     public void onClick(View v) {

                        mMap.clear();
                        if (button2.isShown()) {

                            mMap.addMarker(new MarkerOptions().position(new LatLng()).title("").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_hospital)));
                                                          mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(), ));

                            button3.setOnClickListener(new View.OnClickListener() {
                                @Override
                                public void onClick(View v) {

                                    mMap.clear();
                                    if (button3.isShown()) {

                                        mMap.addMarker(new MarkerOptions().position(new LatLng(`enter code here`)).title(" ").icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher_busstop)));
                                                          mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(), ));

                                    }

                                }

                            });
                        }
                    }
                });
            }
        }
    });
}
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
        .findFragmentById(R.id.map);
mapFragment.getMapAsync(this);

/**
 * Manipulates the map once available.
 * This callback is triggered when the map is ready to be used.
 * This is where we can add markers or lines, add listeners or move the     camera. In this case,
 * we just add a marker near Sydney, Australia.
 * If Google Play services is not installed on the device, the user will be prompted to install
 * it inside the SupportMapFragment. This method will only be triggered once the user has
 * installed Google Play services and returned to the app.
 */
@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng (     ),));
}
}

Here is my activity_maps.xml

    <fragment    xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:map="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/map"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MapsActivity"
        tools:layout="@android:layout/simple_spinner_dropdown_item" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="text1"
        android:padding="8dp"
        android:background="#53fed0"
        android:id="@+id/buttonMaps"
        android:layout_marginLeft="90dp"
        android:layout_marginStart="90dp"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="text2"
        android:id="@+id/buttonMaps2"
        android:layout_marginTop="35dp"
        android:layout_below="@+id/buttonMaps"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:clickable="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Bus Stops"
        android:id="@+id/buttonMaps3"
        android:layout_below="@+id/buttonMaps2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="35dp"
        android:clickable="true"/>
</RelativeLayout>

What you're looking for is an "Info Window". Google provides some good examples here of how to implement, plus it is officially supported so this would be the way to go.

https://developers.google.com/maps/documentation/android-api/infowindows

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM