簡體   English   中英

谷歌地圖在標記點擊時打開活動

[英]Google Maps open activity on marker click

我正在谷歌地圖中制作自定義標記,並希望他們在點擊時打開活動。 我使用了 SetOnMarkerClickListener,但它似乎不起作用。 我在哪里 go 錯了? 我怎樣才能讓我的代碼更好更干凈。 下面列出的代碼。

public class Location extends FragmentActivity implements OnMapReadyCallback{

    GoogleMap map;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_location);

        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);

    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        map = googleMap;

        LatLng University = new LatLng(43.242007480536806, 76.95185128808076);
        LatLng AgroBio = new LatLng(43.24019774903174, 76.95182725886109);
        LatLng WaterLandForest = new LatLng(43.24203640423325, 76.95286753906628);
        LatLng HydraTech = new LatLng(43.24064521255793, 76.95167663826041);
        LatLng IT = new LatLng(43.23943180174249, 76.95194217695317);
        LatLng Vet = new LatLng(43.24140285274656, 76.93963598030956);
        LatLng TechBio = new LatLng(43.24111066883304, 76.93696680532199);
        LatLng AgriTech = new LatLng(43.24118832901344, 76.95236044889603);

        map.moveCamera(CameraUpdateFactory.newLatLngZoom(University, 17));

        map.addMarker(new MarkerOptions().position(University).icon(bitmapDescriptorFromVector(getApplicationContext(), R.drawable.ic_map_university)));
        map.addMarker(new MarkerOptions().position(AgroBio).icon(bitmapDescriptorFromVector(getApplicationContext(), R.drawable.ic_map_university)));
        map.addMarker(new MarkerOptions().position(WaterLandForest).icon(bitmapDescriptorFromVector(getApplicationContext(), R.drawable.ic_map_university)));


        map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                if(marker.equals(University)){
                    Intent intent = new Intent(Location.this, o_kaznau.class);
                    startActivity(intent);
                    return true;
                } if(marker.equals(AgroBio)){
                    Intent intent = new Intent(Location.this, agrobio.class);
                    startActivity(intent);
                }

                return false;
            }
        });

    }

當您將 LatLng 與標記進行比較時,您的 if 條件失敗,因為if(marker.equals(University))將始終為假。

嘗試:

在 onMarkerClick 里面添加這個

LatLng position = marker.getPosition();

然后在你的 if 條件下

if(position.equals(University)){
....
}

與您的第二個 if 條件相同

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM