Google Maps API v2:如何添加OnMarkerClickListener或OnInfoWindowClickListener以启动新活动?

时间:2013-01-11 20:11:54

标签: java android google-maps

我当前的代码

package com.crusaders.epeats;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.GoogleMap.OnMarkerClickListener;
import com.google.android.gms.maps.model.BitmapDescriptorFactory;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import com.google.android.gms.maps.SupportMapFragment;

public class Map extends FragmentActivity implements OnMarkerClickListener{

private Marker myMarkerOne;
private Marker myMarkerTwo;
private Marker myMarkerThree;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map_display);
    GoogleMap googleMap;
    googleMap = ((SupportMapFragment)(getSupportFragmentManager().findFragmentById(R.id.map))).getMap();
    LatLng latLng = new LatLng(-33.796923, 150.922433);
    LatLng latLngTwo = new LatLng(-33.101010, 150.101012);
    LatLng latLngThree = new LatLng(26.123456, 178.123456);
    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    googleMap.setOnMarkerClickListener(this);
        myMarkerOne = googleMap.addMarker(new MarkerOptions()
            .position(latLng)
            .title("myMarkerOne")
            .snippet("myMarkerOne InfoWindow")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE)))
        myMarkerTwo = googleMap.addMarker(new MarkerOptions()
            .position(latLngTwo)
            .title("myMarkerTwo") 
            .snippet("myMarkerTwo InfoWindow")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED)));
        myMarkerThree = googleMap.addMarker(new MarkerOptions()
            .position(latLngThree)
            .title("myMarkerThree")
            .snippet("myMarkerThree InfoWindow")
            .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_CYAN)));
    googleMap.getUiSettings().setCompassEnabled(true);
    googleMap.getUiSettings().setZoomControlsEnabled(true);
    googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10));   
}
@Override
public boolean onMarkerClick(final Marker marker) {
    // TODO Auto-generated method stub
    if (marker.equals(myMarkerOne))
    {
    setContentView(R.layout.viewone);
    }
    else if (marker.equals(myMarkerTwo))
    {
    setContentView(R.layout.viewtwo);
    }
    return true;
}
}

我不知道我做错了什么。我需要设置多个标记以在点击时打开不同的XML布局。可以通过OnMarkerClickOnInfoWindow点击完成。我将第一个标记设置为打开或设置contentview。 This对我有用,但我可能写错了。

否则if语句是一个测试但它不起作用导致第二个标记不会启动。如果您能帮忙回答这个问题,请提供示例代码和方法,以便在我按下后退按钮时返回地图。

0 个答案:

没有答案