Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android Studio中使用onMarkerClick打开新活动_Android_Google Maps_Google Maps Api 3_Google Maps Markers_Google Maps Android Api 2 - Fatal编程技术网

如何在Android Studio中使用onMarkerClick打开新活动

如何在Android Studio中使用onMarkerClick打开新活动,android,google-maps,google-maps-api-3,google-maps-markers,google-maps-android-api-2,Android,Google Maps,Google Maps Api 3,Google Maps Markers,Google Maps Android Api 2,我正试图在Android Studio中创建一个Android应用程序,该应用程序与Google Maps API配合使用。我已成功地将标记添加到地图上我选择的某个LatLng位置。 单击标记时,会显示一个名为“测试”的标题。但我想要的是,当用户单击标记标题时,它必须打开一个新的活动。然而,我似乎无法让它发挥作用。我添加了一个onMarkerClick,但是,我无法实现它。我真的很困惑。我尝试添加回调方法,但不确定如何添加。 你介意给我看一下正确的代码吗?谢谢,非常感谢 package co

我正试图在Android Studio中创建一个Android应用程序,该应用程序与Google Maps API配合使用。我已成功地将标记添加到地图上我选择的某个LatLng位置。
单击标记时,会显示一个名为“测试”的标题。但我想要的是,当用户单击标记标题时,它必须打开一个新的活动。然而,我似乎无法让它发挥作用。我添加了一个onMarkerClick,但是,我无法实现它。我真的很困惑。我尝试添加回调方法,但不确定如何添加。
你介意给我看一下正确的代码吗?谢谢,非常感谢

package com.msp.googlemapsproject;

import android.content.Intent;
import android.os.Bundle;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;

public class MainActivity extends android.support.v4.app.FragmentActivity
        implements GoogleMap.OnMarkerClickListener {

    static final LatLng MyHome = new LatLng(-29.759933, 30.801030);
    private GoogleMap googleMap;

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

        googleMap.setOnMarkerClickListener(this);

        try{

            if (googleMap == null) {

                googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

            }

            googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);

            googleMap.setMyLocationEnabled(true);

            googleMap.setTrafficEnabled(true);

            googleMap.setIndoorEnabled(true);

            googleMap.setBuildingsEnabled(true);

            googleMap.getUiSettings().setZoomControlsEnabled(true);

            final Marker MyHome_display = googleMap.addMarker(new MarkerOptions().position(MyHome).title("Testing"));


        } catch (Exception e) {

            e.printStackTrace();
        }
    }

    @Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.equals(MyHome))
        {
            Intent intent = new Intent(MainActivity.this, LastScreen.class);
            startActivity(intent);
        }
        return false;
    }
}
试试这个

googleMap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
            @Override
            public void onInfoWindowClick(Marker marker) {
               Intent intent = new Intent(MainActivity.this, LastScreen.class);
               startActivity(intent);
            }
        });

我认为你的问题在于你的if条件,因为你正在测试一个标记和一个板条,所以条件总是错误的:

你可以试试

@Override
    public boolean onMarkerClick(Marker marker) {
        if (marker.getTitle().equals("Testing"))
        {
            Intent intent = new Intent(MainActivity.this, LastScreen.class);
            startActivity(intent);
        }
        return false;
    }

要在活动之间切换,请使用意图:

Intent intent = new Intent(MainActivity.this, LastScreen.class);
startActivity(intent);

请记住在清单中声明活动,否则它将抛出一个错误

我的代码中有一个错误,“无法解析符号‘SetOnInfo WindowClickListener’”,它说,“无法解析符号‘marker’”。检查此链接,它与您有相同的问题。它正在工作,我道歉。你的代码是对的,我插错了!非常感谢!听到这个消息我很高兴:')我使用了@android代码,它成功了,但谢谢你的帮助!我使用了@android代码,它成功了,但是谢谢你的帮助!
$try like this:

public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;
        // Add a marker in Sydney and move the camera
        LatLng chennai = new LatLng(12.9671, 80.2593);
        mMap.addMarker(new MarkerOptions().position(chennai).title("Chennai"));

        LatLng perungudi = new LatLng(12.97, 80.25);
        mMap.addMarker(new MarkerOptions().position(perungudi).title("Perungudi"));

        LatLng pallikarnai = new LatLng(12.9377, 80.2154);
        mMap.addMarker(new MarkerOptions().position(pallikarnai).title("Pallikarnai"));

        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(chennai,12));
        mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                if (marker.getTitle().equals("Chennai")){
                    Toast.makeText(MapsActivity.this, "Clicked"+marker.getTitle(), Toast.LENGTH_SHORT).show();
                }
                return false;
            }
        });

    }