如何在Android Studio中使用onMarkerClick打开新活动
我正试图在Android Studio中创建一个Android应用程序,该应用程序与Google Maps API配合使用。我已成功地将标记添加到地图上我选择的某个LatLng位置。如何在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
单击标记时,会显示一个名为“测试”的标题。但我想要的是,当用户单击标记标题时,它必须打开一个新的活动。然而,我似乎无法让它发挥作用。我添加了一个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;
}
});
}