Google 地图标记信息失败 (ANDROID)

Google maps marker info failed (ANDROID)

在我的标记上我添加了一个 setOnMarkerClickListener。所以这是我的 createMethod

protected void createMarker(String driversName, int totalPass, String busNum, double latitude, double longitude, String location) {
    Marker marker = mMap.addMarker(new MarkerOptions()
            .position(new LatLng(latitude, longitude))
            .title(location)
            .snippet("Driver's Name: " + driversName + "\nTotal Passenger: " + totalPass + "\nBus number: " + busNum));
    mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
    {
        @Override
        public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
        {
            Toast.makeText(MainMapActivity.this, "hey!", Toast.LENGTH_SHORT).show();
            dialogInfo();
            return true;
        }
    });
}

dialogInfo()

public void dialogInfo() {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("Current Location: "+location);
    builder.setMessage("Bus number: "+busNum+"\nDriver's name: "+name+"\nCurrent total passenger: "+totalPassenger)
            .setCancelable(false)
            .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.cancel();
                }
            });
    AlertDialog alertDialog = builder.create();
    alertDialog.show();
}

对话框的值相同

已编辑

你的代码没有什么问题,我可以看出你的意图(提问前请更具体)。

protected void createMarker(GoogleMap mMap,String driversName, int totalPass, String busNum, double latitude, double longitude, String location) {
        Marker marker = mMap.addMarker(new MarkerOptions()
                .position(new LatLng(latitude, longitude))
                .title(location)
                .snippet("Driver's Name: " + driversName + "\nTotal Passenger: " + totalPass + "\nBus number: " + busNum));
                }

在方法外赋值onClickListener

mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener()
        {
            @Override
            public boolean onMarkerClick(com.google.android.gms.maps.model.Marker marker)
            {
                Toast.makeText(MainMapActivity.this, "hey!", Toast.LENGTH_SHORT).show();
                dialogInfo(marker); //get value from marker
                return true;
            }
        });

dialogInfo()

public void dialogInfo(Marker marker) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(marker.getTitle());
        builder.setMessage(marker.getSnippet())
                .setCancelable(false)
                .setPositiveButton("OK", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        dialog.cancel();
                    }
                });
        AlertDialog alertDialog = builder.create();
        alertDialog.show();
    }