我有一個代碼,當你點擊infowindow時,一個標記開始一個活動。它工作得很好。但是當我嘗試添加另一個標記和另一個@override時,它總是打開所有標記infowindows中的最後一個類。所以實質上,所有標記infowindows在點擊時都會打開相同的活動,而不是打開我打算使用的單獨的類。Android谷歌地圖V2 - 在幾個標記上的OnInfoWindowClick點擊
這是下面的代碼,成功地在InfoWindowClicked上打開1個活動。我稱之爲example.class,這是給所有需要這個例子的人。
public class MainActivity extends Activity implements OnInfoWindowClickListener {
private GoogleMap googlemap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(isGooglePlay()){
setContentView(R.layout.activity_main);
setUpMap();
{ } }
googlemap.addMarker(new MarkerOptions()
.position(new LatLng(0,-0))
.title("Title")
.snippet("Snippet")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(MainActivity.this,Example.class);
startActivity(intent);
} });
{
所以下面的GoogleMap的GoogleMap/MMAP(或者無論你怎麼稱呼你)和@override無效的onCreate(我的應用程序只啓動,如果GooglePlayServices是可用的,你可能不會是這樣的),你可以把標記和infowindowclick代碼。
確保選中某個地方在代碼中有藏漢(通常在私人無效setUpMap(){)
googlemap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
現在下面是兩個標記,但他們都打開example2.class當代碼他們被點擊。有人能幫我解決這個問題,所以我可以將它們分開並讓他們開設不同的課程?
googlemap.addMarker(new MarkerOptions()
.position(new LatLng(0,-0))
.title("Title")
.snippet("Snippet")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(MainActivity.this,Example.class);
startActivity(intent);
} });
{
{
googlemap.addMarker(new MarkerOptions()
.position(new LatLng( 0, -0))
.title("Title")
.snippet("Snippet")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
googlemap.setOnInfoWindowClickListener(new OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Intent intent = new Intent(MainActivity.this,Example2.class);
startActivity(intent);
} });
}}
}
編輯(2013年7月6日):
private GoogleMap googlemap;
private Map<Marker, Class> allMarkersMap = new HashMap<Marker, Class>();
以上是在類層次^^^
Marker marker1 = googlemap.addMarker(new MarkerOptions()
.position(new LatLng(0,0))
.title("England")
.snippet("London")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.star)));
allMarkersMap.put(marker1, Contact.class);
}
public void onInfoWindowClick(Marker marker) {
Class cls = allMarkersMap.get(marker);
Intent intent = new Intent(MainActivity.this, cls);
startActivity(intent);
}
上面^^^ ^是在我的「保護無效onCreate(Bundle savedInstanceState){」。沒有錯誤,當我調試時,我可以看到標記但不能點擊InfoWindow。該警告是:
Class is a raw type. References to generic type Class<T> should be parameterized
我兩次看到此警告的一流水平,並一度在字上「類」的公共無效onInfoWindowClick。我試着像「添加類型參數的‘類’一些不同的東西,但沒有奏效。在標記標記在公共無效我改變標記到MARKER1和下面allMarkersMap行。得到(標記);改變(標記)到(標誌1)只是嘗試,但它沒有工作還有什麼我可以做的嘗試和初始化onInfoWindowClick功能
你有沒有註冊' OnInfoWindowClickListener'就像在原來的代碼? –
是的,我有。我在頂部的'MainActivity extends Activity implements'中放入了OnInfoWindowClickListener。我已經嘗試了公共無效onInfoWindowClick(標記標記)與上面沒有@Override。我不知道爲什麼它不註冊。我已經取出了googlemap.setOnInfoWindowClickListener(新的OnInfoWindowClickListener(){和原來一樣)。 – user1977908
並調用'googlemap.setOnInfoWindowClickListener(this);'? –